- 論壇徽章:
- 0
|
本帖最后由 tianhailong 于 2020-03-15 23:34 編輯
Linux中可以通過 signal(SIGCHLD, SIG_IGN); 來避免僵死進程
/**********************/
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
int main() {
signal(SIGCHLD, SIG_IGN);
int pid = fork();
if (pid == 0) {
int i = 0;
while (i < 5) {
++i;
}
}
else if (pid > 0) {
while (1)
sleep(1);
}
else{
printf("the error \n");
}
return 0;
}
/********************/
有點疑惑,SIGCHLD 信號默認就是忽略,那么有沒有 signal(SIGCHLD, SIG_IGN) 這句應該沒有區別,因為SIGCHLD 信號本來的處理方式就是忽略,但是沒有 signal(SIGCHLD, SIG_IGN) 就會產生僵死進程,很疑惑,希望大家幫忙答疑解惑哈 |
|