我用 fork() 和 wait() 系统调用在 unix 中编写了一个基本的 c++ 程序。我只创造一个孩子。我用过两根管子。因此,在使用第一个管道进行分叉操作后,我正在从子级向父级写入,并且在父级接收到数据后,父级在第二个管道中回写给子级。之后在父方我使用 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() ,但父进程仍然在子进程之前死亡。提前致谢。