我不确定标题所以如果你知道一个更好的标题,请更正。
我在C中做一个简单的“服务器”程序,我正在使用子进程只是为了读取“退出”并关闭“服务器”而不阻塞主进程。
如何使用子进程的退出信号退出父进程中的“循环”?
家长流程:
while(<child is not over>)
{
//process
}
exit...
子进程:
do{
scanf("%s", op);
} while(strcmp(op, EXIT_OPTION) != 0);
exit(EXIT_SUCCESS);
我可以使用wait
或waitpid
,但我不希望父母阻止,只是为了“检查”它。
谢谢。
答案 0 :(得分:0)
waitpid
具有非阻止模式。如果您将WNOHANG
作为waitpid
的第三个参数传递,它将立即返回。您可以检查返回值和/或状态(由waitpid
的第二个参数返回)以检查孩子是否已退出。默认情况下,waitpid
仅等待已终止的子项,并返回子项的pid。如果没有孩子改变了状态,则返回0。
有关详细信息,请查看waitpid
的手册页。