美文网首页
孤儿进程和僵尸进程

孤儿进程和僵尸进程

作者: 小码弟 | 来源:发表于2018-11-04 16:51 被阅读0次

    孤儿进程

    父进程退出,它的子进程就会成为孤儿进程,所有的孤儿进程都会被init接管,释放它们占用的系统资源。孤儿进程没有实质性危害。

    僵尸进程

    进程通过fork创建子进程,如果子进程退出,父进程没有调用waitwaitpid等系统函数获取子进程的状态,那么子进程的描述符、进程号就会一直被占用,成为僵尸进程。
    很明显,僵尸进程会占用系统资源,过多的僵尸进程会导致进程号耗尽,无法创建新进程。

    相关机制:子进程退出后,系统会回收文件、内存等资源,但不会回收进程号,它要等到父进程调用wait后才会被释放。

    解决方法

    子进程退出后,发送SIGCHILD信号,父进程在信号处理函数中调用wait接受子进程的状态。或者可行的话,直接杀死父进程,使子进程成为孤儿进程,由init进程接管。

    总结

    父子进程好比是父子,init进程好比是社保局。
    当父亲意外身亡时,儿子自动成为孤儿(孤儿进程),那么自然社保局(init进程)就会来安置这些孤儿。
    而如果遇到不负责的父亲,对孩子不管不顾,那么社保局可以对这个父亲进行劝解,加强对孩子的关心(wait, waitpid),或者冥顽不灵的,直接处理(kill it)它的孩子由于成为孤儿而依法获得安置。

    相关文章

      网友评论

          本文标题:孤儿进程和僵尸进程

          本文链接:https://www.haomeiwen.com/subject/mdtdxqtx.html