当前位置: 首页 > Linux

僵尸进程和孤儿进程

时间:2023-04-06 06:13:14 Linux

https://www.cnblogs.com/Anker...孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程就会成为孤儿进程.孤儿进程会被init进程(进程号1)收养,init进程会为他们完成状态收集工作。孤立进程是没有父进程的进程。孤儿进程的重任就落在了init进程身上。init进程就像一个民政局,负责处理孤儿进程的善后事宜。每当出现孤儿进程时,内核将孤儿进程的父进程设置为init,init进程会循环wait()其退出的子进程。这样,当一个孤儿进程悲惨地结束了它的生命周期时,init进程将代表党和政府处理它的所有善后事宜。所以孤儿进程没有害处。僵尸进程:一个进程使用fork创建一个子进程。如果子进程退出,父进程没有调用wait或waitpid获取子进程的状态信息,系统中仍然保存着子进程的进程描述符。这种进程称为僵尸进程。处理僵尸进程寻找状态为Z的进程,Z代表zombieprocess,僵尸进程的意思。kill-9可以杀掉一个僵尸进程,所以kill-9就是强行杀掉进程;与SIGTERM相反,这个信号不能被捕获或忽略,接收到这个信号的进程在接收到这个信号时不能进行任何清理。僵尸进程的解决方法(1)通过信号机制,子进程在退出时向父进程发送SIGCHILD信号,父进程处理SIGCHILD信号。在信号处理函数中调用wait处理僵尸进程https://blog.csdn.net/chenkai...(2)fork两次《Unix 环境高级编程》8.6节说的很详细。原理是让子进程成为孤儿进程,使其父进程成为init进程,僵尸进程可以通过init进程处理https://www.cnblogs.com/funbl...