我不确定标题,如果您知道更好的标题,请更正。
我正在用 C 语言编写一个简单的“服务器”程序,并且使用子进程只是为了读取“退出”并关闭“服务器”而不阻塞主进程。
如何使用子进程的退出信号退出父进程中的“循环”?
父进程:
while(<child is not over>)
{
//process
}
exit...
子进程:
do{
scanf("%s", op);
} while(strcmp(op, EXIT_OPTION) != 0);
exit(EXIT_SUCCESS);
我可以使用 wait
或 waitpid
但我不希望父进程阻塞,只是为了“检查”它。
谢谢。
最佳答案
waitpid
具有非阻塞模式。如果将 WNOHANG
作为 waitpid
的第三个参数传递,它将立即返回。您可以检查返回值和/或状态(由waitpid
的第二个参数返回)来检查子进程是否已退出。默认情况下,waitpid
仅等待已终止的子进程,并返回子进程的 pid。如果没有 child 改变状态,则返回 0。
更多信息,您可以查看waitpid
的手册页。
关于c - 父子进程控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30032277/