0
我有一個處理程序SIGCHLD
在一個過程中,產生了許多孩子。爲什麼waitpid()只對所有子進程返回1?
此代碼位於我的處理程序中,pid
始終爲1
。我讀過pid
應該是子進程id
。爲什麼我一直在回1
?
int status;
pid_t pid;
while(pid = waitpid(-1, &status, WNOHANG) > 0)
{
if (WIFEXITED(status))
printf("Child %ld: Ended properly and returned %d\n", pid, WEXITSTATUS(status));
else
printf("Child crashed\n");
}
初始化處理函數的代碼。
void initSIGCHLDSignalHandler()
{
struct sigaction act;
memset(&act,'\0',sizeof(struct sigaction));
sigemptyset(&act.sa_mask);
act.sa_flags = SA_NOCLDSTOP | SA_RESTART;
act.sa_handler = SIGCHLD_SignalHandler;
sigaction(SIGCHLD, &act, NULL);
}
我只是在您發佈的時候這樣做的。工作。謝謝。 –
新人的錯誤。 –