<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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>EmbLogic &#187; Sudipto</title>
	<atom:link href="https://www.emblogic.com/blog/author/sudipto/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.emblogic.com/blog</link>
	<description>Embedded System and ARM Training</description>
	<lastBuildDate>Tue, 03 Mar 2020 13:00:06 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>Fork() and Standard Out</title>
		<link>https://www.emblogic.com/blog/07/fork-and-standard-out-3/</link>
		<comments>https://www.emblogic.com/blog/07/fork-and-standard-out-3/#comments</comments>
		<pubDate>Thu, 19 Jul 2012 11:35:21 +0000</pubDate>
		<dc:creator><![CDATA[Sudipto]]></dc:creator>
				<category><![CDATA[Linux Internals and System Programming]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=3986</guid>
		<description><![CDATA[Here is the code snippet of a prog ************** START ********************** #include &#60;stdio.h&#62; #include &#60;sys/types.h&#62; #include &#60;stdlib.h&#62; #include &#60;unistd.h&#62; int glob_var = 100; int main(void) { int var; pid_t pid; var = 200; printf(&#8220;++Before Fork()\n&#8221;); if((pid = fork()) &#60; 0) &#8230; <a href="https://www.emblogic.com/blog/07/fork-and-standard-out-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Here is the code snippet of a prog</p>
<p>************** START **********************<br />
#include &lt;stdio.h&gt;<br />
#include &lt;sys/types.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;unistd.h&gt;</p>
<p>int glob_var = 100;</p>
<p>int main(void)<br />
{<br />
int var;<br />
pid_t pid;</p>
<p>var = 200;</p>
<p>printf(&#8220;++Before Fork()\n&#8221;);</p>
<p>if((pid = fork()) &lt; 0) {<br />
perror(&#8220;fork error&#8221;);<br />
} else if (pid == 0) {<br />
glob_var++;<br />
var++;<br />
printf(&#8220;Within Child = &gt; pid: %d &lt;&gt; Parent pid =&gt; %d\n&#8221;, getpid(), getppid());<br />
} else {<br />
var&#8211;;<br />
glob_var&#8211;;<br />
}<br />
printf(&#8220;pid = %d, glob_var = %d, var = %d\n&#8221;,getpid(), glob_var, var);<br />
exit(0);<br />
}</p>
<p>************** END *******************</p>
<p>and here is the output</p>
<p>******************** OUTPUT START ****************</p>
<p>sudipto$ gcc -Wall -g fork01.c -o fork01<br />
sudipto$ ./fork01<br />
++Before Fork()<br />
pid = 4718, glob_var = 99, var = 199<br />
Within Child = &gt; pid: 4719 &lt;&gt; Parent pid =&gt; 4718<br />
pid = 4719, glob_var = 101, var = 201<br />
sudipto$ ./fork01 &gt; temp.out<br />
sudipto$ cat temp.out<br />
++Before Fork()<br />
pid = 4720, glob_var = 99, var = 199<br />
++Before Fork()<br />
Within Child = &gt; pid: 4721 &lt;&gt; Parent pid =&gt; 4720<br />
pid = 4721, glob_var = 101, var = 201<br />
sudipto$</p>
<p>******************** OUTPUT END ************************</p>
<p>Question: Why is &#8220;++Before Fork()&#8221; being printed twice when I read from file? Am i missing something here. Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/fork-and-standard-out-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
