Linux 避免僵尸进程

1.交给内核释放

signal(SIGCHLD,SIG_IGN);

2.父进程处理

wait(NULL);
waitpid(...);

3.如果父进程忙

通过父进程,注册信号处理函数,来处理SIGCHLD信号,来调用2方法的函数。

4.两次fork

通过父进程调用fork生成子进程,然后通过子进程调用fork生成孙子进程后子进程退出,在孙子进程进行处理实际业务。

5.sigaction函数 + SA_NOCLDWAIT标记

struct sigaction act;

pid_t pid;

act.sa_handler =SIG_DFL;

act.sa_flag=SA_NOCLDWAIT;

act.sa_sigaction=NULL;

sigaction(SIGCHLD,&act,NULL);

你可能感兴趣的:(Linux 避免僵尸进程)