<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]Linux系统下的stderr和stdout详细解说。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Thu, 13 Jun 2019 09:58:28 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	#cat stdouterr.c <br/><textarea name="code" class="php" rows="15" cols="100">
#include &lt;stdio.h&gt;
int main()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stdout,&quot;Hello &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&quot;World!&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
&#125;
</textarea><br/><br/>解答：这段代码的输出是什么呢？你可以快速的将代码敲入你电脑上（当然，拷贝更快），然后发现输出是<br/>World!Hello<br/>果然：<br/>./stdouterr <br/>World!Hello <br/><br/>这是为什么呢？在默认情况下，stdout是行缓冲的，他的输出会放在一个buffer里面，只有到换行的时候，才会输出到屏幕。而stderr是无缓冲的，会直接输出，举例来说就是printf(stdout, &quot;xxxx&quot;) 和 printf(stdout, &quot;xxxx&#92;n&quot;)，前者会憋住，直到遇到新行才会一起输出。而printf(stderr, &quot;xxxxx&quot;)，不管有么有&#92;n，都输出。<br/><br/><br/>stdout憋住,证明换行才会输出:<br/>#cat stdouterr.c <br/><textarea name="code" class="php" rows="15" cols="100">
#include &lt;stdio.h&gt;
int main()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stdout,&quot;Hello &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stdout,&quot;Hello&#92;n &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stdout,&quot;Hello &quot;);
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&quot;World!&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
&#125;
</textarea><br/><br/>#./stdouterr <br/>Hello Hello&nbsp;&nbsp; #stdout换行输出<br/>World! Hello&nbsp;&nbsp;#World!是stderr输出,会立即输出，在它上面Hello的前面输出。<br/><br/><br/><textarea name="code" class="php" rows="15" cols="100">
#include &lt;stdio.h&gt;
int main()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr, &quot;Can&#039;t open it!&#92;n&quot;); 
&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stdout, &quot;Can&#039;t open it!&#92;n&quot;); 
&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Can&#039;t open it!&#92;n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
&#125;
</textarea><br/>make stdouterr<br/>cc&nbsp;&nbsp;&nbsp;&nbsp; stdouterr.c&nbsp;&nbsp; -o stdouterr<br/><br/>./stdouterr <br/>Can&#039;t open it!<br/>Can&#039;t open it!<br/>Can&#039;t open it!<br/><br/><br/>./stdouterr &gt; tmp.txt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>Can&#039;t open it!<br/><br/>这3句效果不是一样啊，有什么区别吗？<br/><br/>有区别。 <br/>stdout -- 标准输出设备 (printf(&quot;..&quot;)) 同 stdout。 <br/>stderr -- 标准错误输出设备 <br/>两者默认向屏幕输出。 <br/>但如果用转向标准输出到磁盘文件，则可看出两者区别。stdout输出到磁盘文件，stderr在屏幕。 <br/><br/><br/>cat tmp.txt <br/>Can&#039;t open it!<br/>Can&#039;t open it!<br/><br/><br/><br/>实践来自：https://blog.csdn.net/qingzhuyuxian/article/details/80391143
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]Linux系统下的stderr和stdout详细解说。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>