如何跟踪在 C++ 中杀死了哪些所有子进程

How to keep track of which all child processes are killed in c++

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

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

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