子进程错误与&等'C`

时间:2013-09-29 10:23:33

标签: c fork wait

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

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

2 个答案:

答案 0 :(得分:2)

如果创建子进程时出现问题,fork将返回-1,因此此代码永远不会wait

如果子进程发生了某些事情,等待将返回,您可以观察status

答案 1 :(得分:1)

如果无法创建子项,fork()将返回-1,之后您应该查看errno。此处未创建任何错误进程。您的代码不会检查此案例。

如果孩子被创造并死亡,则wait()将返回已终止过程的PID,孩子死亡的原因将在状态中给出。请参阅man page了解如何从状态中提取含义。