0

在下面的代码中,如果创建子进程时出现问题或子进程发生了什么事,会发生什么wait(&status)

pid_t pid;
int status;
if(pid=fork()){
   printf("Parent Process\n");
   wait(&status);
} else... child process here
4

2 回答 2

2

如果创建子进程有问题,fork 会返回-1,所以这段代码永远不会wait

如果子进程发生了什么事,wait 会返回,你可以观察status.

于 2013-09-29T10:27:50.370 回答
1

如果无法创建孩子,fork() 将返回 -1,之后您应该查看 errno。此处不创建错误进程。您的代码不会检查这种情况。

如果 child 被创建并死亡,wait() 将返回终止进程的 PID,child 死亡的原因在 status 中给出。有关如何从状态中提取含义的信息,请参见 手册页。

于 2013-09-29T10:27:07.817 回答