我试图弄清楚子进程(在 Windows 上使用 CreateProcess() 创建)何时崩溃或正常退出。我正在将 Unix 代码移植到 Windows 并且对此有很多问题。
我在 Unix 上使用 SIGCHLD,例如:
struct sigaction act;
bzero(&act, sizeof(act));
act.sa_handler = sig_handler;
act.sa_flags = SA_RESTART;
sigaction(SIGCHLD, &act, 0);
void sig_handler(int signal)
{
int pid, status;
if (signal == SIGCHLD) {
while ((pid = waitpid(-1, &status, WNOHANG)) > 0) {
// Remove pid from a data structure
}
}
}
我正在研究创建一个调用 WaitForMultipleObjects 的新线程的解决方案,但问题是可以随时创建新进程,并且我认为在创建新进程时我不能中断 WaitForMultipleObjects。我不想为每个具有 WaitOnSingleObject 的进程生成一个新线程(如果必须的话,我宁愿拉入一个线程)。
请问在这种情况下最好的解决方案是什么?