Chinaunix
标题:
linux 僵死进程疑惑
[打印本页]
作者:
tianhailong
时间:
2020-03-15 23:27
标题:
linux 僵死进程疑惑
本帖最后由 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) 就会产生僵死进程,很疑惑,希望大家帮忙答疑解惑哈
作者:
qwsxcd
时间:
2020-03-28 01:33
作者:
0x012ff54a
时间:
2020-06-11 15:53
回复
1#
tianhailong
默认操作不是简简单单的忽略和主动设置忽略是不一样的操作。
默认操作是:
1. 忽略信号;
2. 终止程序。
作者:
tianhailong
时间:
2021-10-11 15:58
谢谢,受教了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2