0
imageのプロセスツリーを作成しようとしています。下に私が書いたコードがあります。それは正常に動作しますが、半分しか動作しません。私のコードの出力はsecond screenshotです。問題は、私が最後の世代を作る方法を知らないことです。私はあなたの質問が正しい理解していれば特定のプロセスツリーの作成
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int i;
int j;
pid_t ppid;
pid_t cpid;
ppid = getpid();
printf("I'm the parent, my PID is: %d\n", ppid);
for (i = 0; i < 4; i++) {
ppid = fork();
if (ppid == 0) {
printf("Hello, my PID is: %d, my parent's PID is %d\n", getpid(), getppid());
for(j = 0; j < 2; j++) {
ppid = fork();
if (ppid == 0) {
printf("Hello, my PID is: %d, my parent's PID is %d\n", getpid(), getppid());
sleep(60);
printf("I'm process %d and I'm done\n", getpid());
exit(0);
}
}
sleep(60);
printf("I'm process %d and I'm done\n", getpid());
exit(0);
}
}
sleep(1);
printf("I'm process %d. Waiting for one of my children to complete", getpid());
wait(NULL);
printf("Eltern: I'm done\n");
printf("... and bye. \n");
}
Thx。たぶんあなたはより多くの時間を助けることができます。各親プロセスが自分の子プロセスが完了するのを待っていることはどうすればできますか?私のコードでは、第一世代の親だけが子供を待っています。 –
すべての 'exit'の直前に' wait'または 'waitpid'を試みましたか? – 4386427
jep。待機(null)。ただ自分でそれに来た。どうも :) –