我正在尝试弄清楚一个子进程(在Windows上使用CreateProcess()创建)何时崩溃或正常退出。我正在将Unix代码移植到Windows上,并且遇到了很多问题。
在Unix上,我使用SIGCHLD,如下所示:
我在查看创建调用WaitForMultipleObjects的新线程的解决方案,但问题是新进程可以随时被创建,而且我不认为我可以在创建新进程时中断WaitForMultipleObjects。我不想为每个具有WaitOnSingleObject的进程产生一个新线程(如果必须,我更喜欢只拉入单个线程)。
请问在这种情况下最好的解决方案是什么?
在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的进程产生一个新线程(如果必须,我更喜欢只拉入单个线程)。
请问在这种情况下最好的解决方案是什么?