-3
私は3つの子プロセスをフォークするプログラムを書く必要があります。複数の子をフォークし、子プロセスが終了するまで待つ
親プロセスは、独自のPID情報を1回だけ表示し、子プロセスが終了するのを待ちます。
すべての子プロセスが終了すると、メインプロセスは「メインプロセスが終了しました」と表示して終了します。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char *argv[], char *env[])
{
pid_t my_pid, parent_pid, child_pid;
int status;
/* get and print my pid and my parent's pid. */
my_pid = getpid(); parent_pid = getppid();
printf("\n Parent: my pid is %d\n\n", my_pid);
printf("Parent: my parent's pid is %d\n\n", parent_pid);
/* print error message if fork() fails */
if((child_pid = fork()) < 0)
{
perror("fork failure");
exit(1);
}
/* fork() == 0 for child process */
if(child_pid == 0)
{
execl("/bin/date", "date", 0, 0);
printf("This print is after execl() and should not have been executed if execl were successful! \n\n");
_exit(1);
}
/*
* parent process
*/
else
{
printf("\nParent: I created a child process.\n\n");
printf("Parent: my child's pid is: %d\n\n", child_pid);
wait(&status); /* can use wait(NULL) since exit status
from child is not used. */
printf("\n Parent: my child is dead. I am going to leave.\n \n ");
}
return 0;
}
これが緊急に必要な場合は、おそらくSOにトピック以外の質問をする代わりに、これをコーディングするのに時間を費やす必要があります。これは 'gimmetehcodez.biz'ではありません。私たちは、あなたがコード内の特定の問題に悩まされている場合、あなたがその研究と解決の試みをその問題の中で実証するならば、あなた自身で研究し解決しようとした後、あなたを助けることができます。しかし、私たちは**あなたのコードを書いていません**。 – Angew
1つの子プロセスで動作させることは、開始するのに適しているようです。 – molbdnilo
関連するCライブラリ呼び出しは、fork、system、waitpidです。行って、マニュアルページでそれらを見てください。またはRichard W. Stevensの著書「UNIX環境でのプログラミング」を読んでください。 –