【问题标题】:Parent and child process control父子进程控制
【发布时间】:2015-05-04 14:10:24
【问题描述】:

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

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

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

父进程:

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

子进程:

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

exit(EXIT_SUCCESS);

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

谢谢。

【问题讨论】:

    标签: c process


    【解决方案1】:

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

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

    【讨论】:

    • 我已经测试过了,它可以工作。只是对代码进行了更正,它是 .. == 0 而不是 ...!= 0。谢谢!
    • 我的坏@Matthias。完成!
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2017-12-18
    • 2017-08-09
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多