父母和子女过程控制

时间:2015-05-04 14:10:25

标签: c process

我不确定标题所以如果你知道一个更好的标题,请更正。

我在C中做一个简单的“服务器”程序,我正在使用子进程只是为了读取“退出”并关闭“服务器”而不阻塞主进程。

如何使用子进程的退出信号退出父进程中的“循环”?

家长流程:

while(<child is not over>)
{
   //process
}
exit...

子进程:

do{
  scanf("%s", op);
} while(strcmp(op, EXIT_OPTION) != 0);

exit(EXIT_SUCCESS);

我可以使用waitwaitpid,但我不希望父母阻止,只是为了“检查”它。

谢谢。

1 个答案:

答案 0 :(得分:0)

waitpid具有非阻止模式。如果您将WNOHANG作为waitpid的第三个参数传递,它将立即返回。您可以检查返回值和/或状态(由waitpid的第二个参数返回)以检查孩子是否已退出。默认情况下,waitpid仅等待已终止的子项,并返回子项的pid。如果没有孩子改变了状态,则返回0。

有关详细信息,请查看waitpid的手册页。