fork() および wait() システム コールを使用して、Unix で基本的な C++ プログラムを作成しました。私は子供を1人だけ作成しています。パイプは2本使いました。したがって、最初のパイプでフォーク操作を行った後、子から親に書き込み、親がデータを受信した後、親は 2 番目のパイプで子に書き戻します。その後、親側でwait(0)システムコールを使用しています。しかし、それでも私の親プロセスは子プロセスの前に死ぬのですか?
構造は次のようなものです。
main()
char buff[] = "Parent process kills";
char cuff[] = "before Child process";
int fd1[2];
int fd2[2];
pipe(fd1);
pipe(fd2);
if((pid = fork()) == 0)
{
close(fd1[0]);
close(fd2[1]);
write(fd1[1],buff,strlen(buff)+1);
read(fd2[0],cuff,sizeof(cuff));
}
else
{
close(fd1[1]);
close(fd2[0]);
read(fd1[0],buff,sizeof(buff));
write(fd2[1],cuff,strlen(cuff)+1);
wait((int *) 0);
}
close(fd1);
close(fd2);
}'
wait() が使用されていても、親プロセスは子の前に終了します。事前に感謝します。