【问题标题】:How to keep track of which all child processes are killed in c++如何跟踪在c ++中杀死了哪些所有子进程
【发布时间】:2016-02-27 07:57:47
【问题描述】:

我正在编写服务器。它使用fork() 创建新的子进程。当父进程死亡时,我想杀死子进程。我打算使用一个数组来存储子进程的 pid。但是子进程有可能在父进程之前终止。在这种情况下,如果我们使用SIGKILL和已经终止的子进程的pid调用kill函数,它会抛出异常吗?

【问题讨论】:

  • @n.m 感谢您的响应。wait() 系统调用暂停调用进程的执行,直到其子进程之一终止。但我不希望调用进程的执行等到孩子被终止了。
  • 仔细阅读,关注WNOHANG

标签: c++ server parent-child kill sigkill


【解决方案1】:

当子进程终止时,会向父进程发送SIGCHLD 信号。您可以在父级中处理此信号以检查哪个子级自行终止,然后您有机会为它发送wait。您应该为所有子进程wait() 避免僵尸进程。

您还可以查看此线程,了解在父级终止时让子级终止的另一种方法:How to make child process die after parent exits?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多