<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: A much faster popen() and system() implementation for Linux</title>
	<atom:link href="http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/</link>
	<description>Enthusiasm never stops</description>
	<lastBuildDate>Wed, 01 Feb 2012 12:33:24 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Ivan Zahariev</title>
		<link>http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/#comment-2095</link>
		<dc:creator><![CDATA[Ivan Zahariev]]></dc:creator>
		<pubDate>Fri, 18 Mar 2011 09:43:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.famzah.net/?p=179#comment-2095</guid>
		<description><![CDATA[This problem has now been fixed. Thank you.]]></description>
		<content:encoded><![CDATA[<p>This problem has now been fixed. Thank you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: david coz</title>
		<link>http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/#comment-2084</link>
		<dc:creator><![CDATA[david coz]]></dc:creator>
		<pubDate>Sun, 13 Mar 2011 09:10:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.famzah.net/?p=179#comment-2084</guid>
		<description><![CDATA[Ok!
I just updated your ticked with a crash example when you compile everything in C++.]]></description>
		<content:encoded><![CDATA[<p>Ok!<br />
I just updated your ticked with a crash example when you compile everything in C++.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ivan Zahariev</title>
		<link>http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/#comment-2082</link>
		<dc:creator><![CDATA[Ivan Zahariev]]></dc:creator>
		<pubDate>Sat, 12 Mar 2011 11:40:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.famzah.net/?p=179#comment-2082</guid>
		<description><![CDATA[The exit() vs. _exit() was a good point. I’ve created an issue ticket about it:
http://code.google.com/p/popen-noshell/issues/detail?id=1

Thanks for your comments.]]></description>
		<content:encoded><![CDATA[<p>The exit() vs. _exit() was a good point. I’ve created an issue ticket about it:<br />
<a href="http://code.google.com/p/popen-noshell/issues/detail?id=1" rel="nofollow">http://code.google.com/p/popen-noshell/issues/detail?id=1</a></p>
<p>Thanks for your comments.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: david coz</title>
		<link>http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/#comment-2078</link>
		<dc:creator><![CDATA[david coz]]></dc:creator>
		<pubDate>Wed, 09 Mar 2011 20:59:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.famzah.net/?p=179#comment-2078</guid>
		<description><![CDATA[Nice articles!
I mentioned your article in &lt;a href=&quot;http://stackoverflow.com/questions/4259629/what-is-the-difference-between-fork-and-vfork/5207945#5207945&quot; rel=&quot;nofollow&quot;&gt; this stackoverflow topic &lt;/a&gt;

Another drawback of fork():
Even if it doesn&#039;t duplicate memory in the end thanks to COW, fork() still fails if there is not enough memory to duplicate the memory used by your parent process.
It can be quite annoying ...

I looked at your code, and it looks good in general! 
I&#039;ll still stick with posix_spawn() for production code, but your code was inspiring!

You could try to write shorter lines (less than 80 chars is ideal :),
and IMHO you should replace exit() by _exit() in void _popen_noshell_child_process(). 
Otherwise you may run into troubles esp. with c++ code, see http://www.unixguide.net/unix/programming/1.1.3.shtml]]></description>
		<content:encoded><![CDATA[<p>Nice articles!<br />
I mentioned your article in <a href="http://stackoverflow.com/questions/4259629/what-is-the-difference-between-fork-and-vfork/5207945#5207945" rel="nofollow"> this stackoverflow topic </a></p>
<p>Another drawback of fork():<br />
Even if it doesn&#8217;t duplicate memory in the end thanks to COW, fork() still fails if there is not enough memory to duplicate the memory used by your parent process.<br />
It can be quite annoying &#8230;</p>
<p>I looked at your code, and it looks good in general!<br />
I&#8217;ll still stick with posix_spawn() for production code, but your code was inspiring!</p>
<p>You could try to write shorter lines (less than 80 chars is ideal <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ,<br />
and IMHO you should replace exit() by _exit() in void _popen_noshell_child_process().<br />
Otherwise you may run into troubles esp. with c++ code, see <a href="http://www.unixguide.net/unix/programming/1.1.3.shtml" rel="nofollow">http://www.unixguide.net/unix/programming/1.1.3.shtml</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ivan Zahariev</title>
		<link>http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/#comment-2060</link>
		<dc:creator><![CDATA[Ivan Zahariev]]></dc:creator>
		<pubDate>Tue, 01 Mar 2011 07:22:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.famzah.net/?p=179#comment-2060</guid>
		<description><![CDATA[I have looked into the posix_spawn() method, but it didn&#039;t seem very well documented at that time, nor stable. In the previous user comment, Xavier Roche reports that the API is also a bit broken.]]></description>
		<content:encoded><![CDATA[<p>I have looked into the posix_spawn() method, but it didn&#8217;t seem very well documented at that time, nor stable. In the previous user comment, Xavier Roche reports that the API is also a bit broken.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan Tomayko</title>
		<link>http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/#comment-2058</link>
		<dc:creator><![CDATA[Ryan Tomayko]]></dc:creator>
		<pubDate>Sun, 27 Feb 2011 13:22:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.famzah.net/?p=179#comment-2058</guid>
		<description><![CDATA[This is great stuff. I wonder, have you ever considered implementing a subset of posix_spawn() instead of, or in addition to, popen() and system()? You should be able to implement popen() and system() using the equivalent of only posix_spawn_file_actions_addclose(), posix_spawn_file_actions_addopen(), and posix_spawn_file_actions_adddup2(), and would have a significantly more versatile interface to boot.]]></description>
		<content:encoded><![CDATA[<p>This is great stuff. I wonder, have you ever considered implementing a subset of posix_spawn() instead of, or in addition to, popen() and system()? You should be able to implement popen() and system() using the equivalent of only posix_spawn_file_actions_addclose(), posix_spawn_file_actions_addopen(), and posix_spawn_file_actions_adddup2(), and would have a significantly more versatile interface to boot.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xavier Roche</title>
		<link>http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/#comment-1925</link>
		<dc:creator><![CDATA[Xavier Roche]]></dc:creator>
		<pubDate>Fri, 10 Dec 2010 08:31:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.famzah.net/?p=179#comment-1925</guid>
		<description><![CDATA[Thanks for this interesting article. One additional interesting technic: the posix_spawn() (http://www.opengroup.org/onlinepubs/009695399/functions/posix_spawn.html) function is supposed to be a modern replacement to the old fork()/exec(). The performances, as far as I tested, are equivalent to the clone()/exec() one. [Unfortunately the API behind is a bit broken, and is not really allowing to close all opened process handles, which is just a shame.]]]></description>
		<content:encoded><![CDATA[<p>Thanks for this interesting article. One additional interesting technic: the posix_spawn() (<a href="http://www.opengroup.org/onlinepubs/009695399/functions/posix_spawn.html" rel="nofollow">http://www.opengroup.org/onlinepubs/009695399/functions/posix_spawn.html</a>) function is supposed to be a modern replacement to the old fork()/exec(). The performances, as far as I tested, are equivalent to the clone()/exec() one. [Unfortunately the API behind is a bit broken, and is not really allowing to close all opened process handles, which is just a shame.]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

