<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>僵尸 - 四号程序员</title>
	<atom:link href="https://www.coder4.com/archives/tag/%E5%83%B5%E5%B0%B8/feed" rel="self" type="application/rss+xml" />
	<link>https://www.coder4.com</link>
	<description>Keep It Simple and Stupid</description>
	<lastBuildDate>Sun, 31 Mar 2013 09:03:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>异步回收fork出的子进程(僵尸进程)</title>
		<link>https://www.coder4.com/archives/151</link>
					<comments>https://www.coder4.com/archives/151#respond</comments>
		
		<dc:creator><![CDATA[coder4]]></dc:creator>
		<pubDate>Thu, 03 Dec 2009 09:11:15 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[fork]]></category>
		<category><![CDATA[waitpid]]></category>
		<category><![CDATA[僵尸]]></category>
		<category><![CDATA[异步]]></category>
		<guid isPermaLink="false">http://www.coder4.com/?p=151</guid>

					<description><![CDATA[fork()之后，子进程和父进程分叉执行，僵尸进程的产生是因为父进程没有给子进程“收尸”造成的，又可以根据危害程度分为下述两类：
总体来说：当子进程结束之后，但父进程未结束之前，子进程将成为僵尸进程。
（1）当子进程结束之后，但父进程未结束之前，子进程将成为僵尸进程，父进程结束后僵尸被init进程回收。
（2）如果子进程结束了，但是父进程始终没有结束，那么这个僵尸将一直存在，而且随着exec，僵尸越来越多。
传统的方法是在parent中使用wait()等待子进程直到回收，但是这样就会一直阻塞，父进程什么都作不了了！
有没有别的方法呢？有！那就是使用waitpid()＋Signal的方法实现异步干掉僵尸进程。
原理：
(1)子进程退出的时候，会发送一个信号：SIGCHLD
(2)使用signal()可以指定程序处理某个信号量的对应handle函数
内附源代码。]]></description>
		
					<wfw:commentRss>https://www.coder4.com/archives/151/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
