私はUNIXプログラミングに不慣れで、ゾンビプロセスと、fork()を2回使用してそれらを回避する方法について読んでいました。私は本からコードを読み、それを私のシステムで実行しようとしました。私はubuntu12.04を使用しています。次のコードを実行しました。
#include<stdio.h>
#include<sys/wait.h>
#include<stdlib.h>
int main()
{
pid_t pid;
if(pid = fork() < 0)
printf("Fork Error.!!!\n");
else
if(pid == 0)
{
if((pid = fork()) < 0)
printf("Fork2 Error.!!!\n");
else
if(pid > 0)
exit(0);
sleep(2);
printf("Second Child, parent id: %d\n", getppid());
exit(0);
}
if(waitpid(pid, NULL, 0) != pid)
printf("Waitpid Error.!!!\n");
exit(0);
}
私が得る出力は次のとおりです:
Second Child, parent id: 1
Second Child, parent id: 1
この本には、これは1回だけ印刷する必要があると書かれており、コードで何が起こっているかを確認したときに、それが起こるはずだと感じています。なぜ2回印刷されるのかわかりません。私はこのコードをネット上の多くの場所で見つけましたが、これを説明する何かを得ることができませんでした。どんな助けでも大歓迎です。ありがとう。!!