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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容