- 论坛徽章:
- 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) 就会产生僵死进程,很疑惑,希望大家帮忙答疑解惑哈 |
|