Linux中僵尸进程和孤儿进程详解
<p>本文主要给大家介绍了关于linux中僵尸进程和孤儿进程的相关内容,分享给出来供大家参考学习,下面来看看详细的介绍:</p>
<p>
<span><strong>1、僵尸进程</strong></span></p>
<p>
一个子进程在其父进程没有调用<code>wait()</code>或<code>waitpid()</code>的情况下退出,这个子进程就是僵尸进程。如果其父进程还存在而一直不调用wait,则该僵尸进程将无法回收,等到其父进程退出后该进程将被init回收。</p>
<p>
<img title="Linux中僵尸进程和孤儿进程详解" alt="Linux中僵尸进程和孤儿进程详解" src="https://zhuji.jb51.net/uploads/img/202305/5da86100192483311260c2e83374589f.jpg"></p>
<p>
运行结果</p>
<p>
<img title="Linux中僵尸进程和孤儿进程详解" alt="Linux中僵尸进程和孤儿进程详解" src="https://zhuji.jb51.net/uploads/img/202305/561c126d23ee51ea0086794004c165ee.jpg"></p>
<p>
<span><strong>2、孤儿进程</strong></span></p>
<p>
一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对他们完成状态收集工作。</p>
<p>
<img title="Linux中僵尸进程和孤儿进程详解" alt="Linux中僵尸进程和孤儿进程详解" src="https://zhuji.jb51.net/uploads/img/202305/4d2da63789c904395744f1ea82ea8668.jpg"></p>
<p>
运行结果</p>
<p>
<img title="Linux中僵尸进程和孤儿进程详解" alt="Linux中僵尸进程和孤儿进程详解" src="https://zhuji.jb51.net/uploads/img/202305/f773b29a3e5d3bd2e881488ccfebd9c1.jpg"></p>
<p>
然而子进程一直在调用,也不能被ctrl^c掉。。</p>
<p>
<span><strong>3、注册函数atexit,在进程退出时调用</strong></span></p>
<p>
<img title="Linux中僵尸进程和孤儿进程详解" alt="Linux中僵尸进程和孤儿进程详解" src="https://zhuji.jb51.net/uploads/img/202305/81c341348ecb932db565ae25febd7a91.jpg"></p>
<p>
运行结果</p>
<p>
<img title="Linux中僵尸进程和孤儿进程详解" alt="Linux中僵尸进程和孤儿进程详解" src="https://zhuji.jb51.net/uploads/img/202305/f4567abb96a6dd113c9cfd3bcae4acd4.jpg"></p>
<p>
由结果可见,当我们用注册函数调用fun1、fun2、fun3时它在整个进程退出时会倒着给我们打印这些函数中的内容,在最后退出时调用第一个注册函数并打印信息。</p>
<p>
<span><strong>总结</strong></span></p>
<p>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对的支持。</p>
<p>
原文链接:http://blog.csdn.net/z517602658/article/details/70339307</p>
頁:
[1]