#include <stdio.h>
#include <signal.h>
void my_isr(int n)
{
printf("in isr pid=%d ppid=%d signal#=%d\n",getpid(),getppid(),n);
}
main()
{
printf("hello %d and bash id : %d\n",getpid(),getppid());
signal(SIGHUP,my_isr);
while(1);
}
achul@achul:~/chennai/linux/lan/sm_assignment$ ./a.out
hello 4220 and bash id : 4150
achul@achul:~/chennai/linux/lan/sm_assignment$ ps -el | grep 4220
0 R 1000 4220 1 63 80 0 - 501 - ? 00:01:22 a.out
这里首先我发送SIGHUP像bash“kill -1 4150”,所以在那里无论进程是什么,都接收SIGHUP ..好吧,现在进程4220没有任何PTS(控制终端)。我怀疑是守护进程的数量是否存在,它显示所有的父进程为INIT(1),那么INIT如何管理并且不会浪费RAM中不必要的内存?
答案 0 :(得分:1)
几乎不清楚。但(大致):
wait()
终止其子女(是否采用),这样可以正确清理流程表,避免僵尸。