c - 父子进程控制

标签 c process

我不确定标题,如果您知道更好的标题,请更正。

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

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

父进程:

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

子进程:

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

exit(EXIT_SUCCESS);

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

谢谢。

最佳答案

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

更多信息,您可以查看waitpid的手册页。

关于c - 父子进程控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30032277/

相关文章:

C 处理输入

process - 执行任何 bash 命令,立即获取 stdout/stderr 的结果并使用 stdin

svn - 需要有关发布管理策略的建议或指示

bash - 如何杀死所有异步进程

c - 使用 %f 输出 EOF

c - 没有 return 语句的 printf 返回值

c# - 如何在 C# 中异步读取结束进程输出?

java - 使用 Java : How to display on-screen keyboard in linux or mac

c - C 中使用指针表示数组的各种方式

c - 对于这种数据我应该使用什么数据结构?