如何避免僵尸进程(转)

  1. 父进程中调用wait()等待回收子进程
  2. 两次fork()来避免僵尸进程    
  3. 在父进程fork()之前安装SIGCHLD信号处理函数,并在此handler函数中调用waitpid()等待子进程结束
  4. 在父进程中加入一条语句:signal(SIGCHLD,SIG_IGN);表示父进程忽略SIGCHLD信号
  5. 杀死父进程,这样子进程就由init进程接管

wait是父进程回收子进程PCB资源的一个系统调用。进程一旦调用了wait函数,就立即阻塞自己
本身,然后由wait函数自动分析当前进程的某个子进程是否已经退出,当找到一个已经变成僵尸的
子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进
程,wait就会一直阻塞,直到有一个出现为止。

 

参考: https://blog.csdn.net/libaineu2004/article/details/85937906

posted @ 2023-06-03 13:02  大黑耗  阅读(45)  评论(0编辑  收藏  举报