﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-newplan-随笔分类-UNIX Programming</title><link>http://www.cppblog.com/newplan/category/5224.html</link><description>阿基米德在洗澡時發現浮力原理，高興得來不及穿㆖褲子，跑到街㆖大喊：Eureka（我找到了）。</description><language>zh-cn</language><lastBuildDate>Mon, 19 May 2008 13:40:49 GMT</lastBuildDate><pubDate>Mon, 19 May 2008 13:40:49 GMT</pubDate><ttl>60</ttl><item><title>五个哲学家线程实现</title><link>http://www.cppblog.com/newplan/archive/2008/01/04/40374.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Thu, 03 Jan 2008 16:14:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/01/04/40374.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/40374.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/01/04/40374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/40374.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/40374.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">apue.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">semaphore.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">pthread.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br><br>#define&nbsp;N&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;"><br>static&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;necs;<br>static&nbsp;sem_t&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">forks;<br><br>void&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;"><br>takeFork(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i)<br>{<br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i</span><span style="color: #000000;">==</span><span style="color: #000000;">N</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sem_wait(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">forks[</span><span style="color: #000000;">0</span><span style="color: #000000;">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sem_wait(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">forks[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sem_wait(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">forks[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sem_wait(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">forks[i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br>void&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;"><br>putFork(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i)<br>{<br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i</span><span style="color: #000000;">==</span><span style="color: #000000;">N</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sem_post(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">forks[</span><span style="color: #000000;">0</span><span style="color: #000000;">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sem_post(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">forks[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;sem_post(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">forks[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;sem_post(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">forks[i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br>&nbsp;&nbsp;&nbsp;}<br>}<br>void&nbsp;<br>thinking(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;necs)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">pholosopher&nbsp;%d&nbsp;&nbsp;is&nbsp;thinking\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,i);<br>&nbsp;&nbsp;&nbsp;&nbsp;sleep(necs);<br><br>}<br>void<br>eating(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;necs)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">pholosopher&nbsp;%d&nbsp;&nbsp;is&nbsp;eating\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,i);<br>&nbsp;&nbsp;&nbsp;&nbsp;sleep(necs);<br>}<br>void&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;"><br>philosopher(void&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">n)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;)n;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thinking(i,necs);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;takeFork(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eating(i,necs);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putFork(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="color: #000000;">//============================</span><span style="color: #000000;">main&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"><br>main(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,char&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">argv[])<br>{<br>&nbsp;&nbsp;&nbsp;pthread_t&nbsp;tid;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(argc</span><span style="color: #000000;">==</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;necs</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(argc&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">2</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;necs</span><span style="color: #000000;">=</span><span style="color: #000000;">atoi(argv[</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;return&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;forks</span><span style="color: #000000;">=</span><span style="color: #000000;">(sem_t</span><span style="color: #000000;">*</span><span style="color: #000000;">)malloc(N</span><span style="color: #000000;">*</span><span style="color: #000000;">sizeof(sem_t));<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;&nbsp;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">N;&nbsp;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;sem_init(forks</span><span style="color: #000000;">+</span><span style="color: #000000;">i,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;status;<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">N;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status</span><span style="color: #000000;">=</span><span style="color: #000000;">pthread_create(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">tid,</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">,philosopher,(void</span><span style="color: #000000;">*</span><span style="color: #000000;">)i);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(status</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err_sys(</span><span style="color: #000000;">"</span><span style="color: #000000;">create&nbsp;error!</span><span style="color: #000000;">"</span><span style="color: #000000;">);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;pthread_join(tid&nbsp;,</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;&nbsp;<br>}<br></span></div>
<br><img src ="http://www.cppblog.com/newplan/aggbug/40374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-01-04 00:14 <a href="http://www.cppblog.com/newplan/archive/2008/01/04/40374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>五个哲学家进程实现</title><link>http://www.cppblog.com/newplan/archive/2008/01/04/40373.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Thu, 03 Jan 2008 16:13:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2008/01/04/40373.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/40373.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2008/01/04/40373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/40373.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/40373.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">apue.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">lock.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">lock.c</span><span style="color: #000000;">"</span><span style="color: #000000;"><br><br></span><span style="color: #000000;">/*</span><span style="color: #000000;">define&nbsp;some&nbsp;important&nbsp;variable</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br></span><span style="color: #000000;">/*=======================================*/</span><span style="color: #000000;"><br>pid_t&nbsp;&nbsp;pid;<br><br>static&nbsp;char&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">forks[</span><span style="color: #000000;">5</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">{<br></span><span style="color: #000000;">"</span><span style="color: #000000;">fork0</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">fork1</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">fork2</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;,</span><span style="color: #000000;">"</span><span style="color: #000000;">fork3</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;,</span><span style="color: #000000;">"</span><span style="color: #000000;">fork4</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>};<br><br>static&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;necs;<br><br>#define&nbsp;N&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;"><br><br></span><span style="color: #000000;">/*======================================*/</span><span style="color: #000000;"><br>void&nbsp;takeFork(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i)<br>{<br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i</span><span style="color: #000000;">==</span><span style="color: #000000;">N</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock(forks[</span><span style="color: #000000;">0</span><span style="color: #000000;">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock(forks[i]);<br>&nbsp;&nbsp;}<br></span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>{<br>lock(forks[i]);<br>lock(forks[i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br>}<br>}<br><br><br>void&nbsp;putFork(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i)<br>{<br>&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i</span><span style="color: #000000;">==</span><span style="color: #000000;">N</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;unlock(forks[</span><span style="color: #000000;">0</span><span style="color: #000000;">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;unlock(forks[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;unlock(forks[i]);<br>&nbsp;&nbsp;&nbsp;unlock(forks[i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br><br>&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"><br>thinking(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;necs){<br>printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">pholosopher&nbsp;%d&nbsp;is&nbsp;thinking\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,i);<br>return&nbsp;sleep(necs);<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;<br>eating(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;necs)<br>{printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">pholosopher&nbsp;%d&nbsp;is&nbsp;eating\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,i);<br>return&nbsp;sleep(necs);<br>}<br>void&nbsp;philosopher(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i)<br>{<br></span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>{<br>thinking(i,necs);<br>takeFork(i);<br>eating(i,necs);<br>putFork(i);<br><br>}<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"><br>&nbsp;main(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc&nbsp;,char&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">argv[])<br>{<br>&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(argc</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;necs</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(argc</span><span style="color: #000000;">==</span><span style="color: #000000;">2</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;necs</span><span style="color: #000000;">=</span><span style="color: #000000;">atoi(argv[</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br></span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #0000ff;">for</span><span style="color: #000000;">(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">N;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>{<br>&nbsp;pid</span><span style="color: #000000;">=</span><span style="color: #000000;">fork();<br>&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(pid&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;philosopher(i);<br>}<br>return&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><img src ="http://www.cppblog.com/newplan/aggbug/40373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2008-01-04 00:13 <a href="http://www.cppblog.com/newplan/archive/2008/01/04/40373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>同步写与异步写文件实现</title><link>http://www.cppblog.com/newplan/archive/2007/11/21/37099.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Wed, 21 Nov 2007 10:45:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2007/11/21/37099.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/37099.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2007/11/21/37099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/37099.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/37099.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><span style="color: #008000;">/*<br>&nbsp;07.11.20 于海韵<br>*/<br>#</span><span style="color: #008000;">include&nbsp;&nbsp;"sys/times.h"<br>#include&nbsp;"apue.h"<br>#include&nbsp;"fcntl.h"</span><span style="color: #008000;"><br></span><span style="color: #000000;">clock_t&nbsp;</span><span style="color: #0000ff;">times</span><span style="color: #000000;">(struct&nbsp;tms&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">buf);<br><br>static&nbsp;void&nbsp;pr_times(clock_t&nbsp;real&nbsp;</span><span style="color: #000000;">,</span><span style="color: #000000;">struct&nbsp;tms&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">tmsstart</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;struct&nbsp;tms&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">tmsend);<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc</span><span style="color: #000000;">,</span><span style="color: #000000;">&nbsp;char&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">argv[])<br>{<br>&nbsp;&nbsp;struct&nbsp;tms&nbsp;tmsstart</span><span style="color: #000000;">,</span><span style="color: #000000;">tmsend;<br>&nbsp;<br>&nbsp;&nbsp;clock_t&nbsp;&nbsp;start</span><span style="color: #000000;">,</span><span style="color: #000000;">end;<br>&nbsp;<br>&nbsp;&nbsp;off_t&nbsp;excursion;<br>&nbsp;<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((excursion</span><span style="color: #000000;">=</span><span style="color: #000000;">lseek(</span><span style="color: #800000;">0</span><span style="color: #000000;">,</span><span style="color: #800000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">SEEK_END))</span><span style="color: #000000;">==-</span><span style="color: #800000;">1</span><span style="color: #000000;">)</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">can&nbsp;not&nbsp;seek!\n</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br>&nbsp;<br>&nbsp;&nbsp;char&nbsp;buf[excursion];<br>&nbsp;<br>&nbsp;&nbsp;</span><span style="color: #000000;">/*</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">excutsion&nbsp;==#%d\n</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">excursion);</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;outfile_fd;</span><span style="color: #000000;">/*</span><span style="color: #000000;">out&nbsp;file&nbsp;descrite&nbsp;tag&nbsp;</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;<br>&nbsp;&nbsp;lseek(</span><span style="color: #800000;">0</span><span style="color: #000000;">,</span><span style="color: #800000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">SEEK_SET);</span><span style="color: #000000;">/*</span><span style="color: #000000;">it&nbsp;is&nbsp;very&nbsp;importent&nbsp;&nbsp;to&nbsp;go&nbsp;back&nbsp;&nbsp;to&nbsp;the&nbsp;beginning&nbsp;of&nbsp;input&nbsp;file</span><span style="color: #000000;">!*/</span><span style="color: #000000;"><br>&nbsp;<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">read</span><span style="color: #000000;">(</span><span style="color: #800000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">buf</span><span style="color: #000000;">,</span><span style="color: #000000;">excursion)</span><span style="color: #000000;">==</span><span style="color: #800000;">0</span><span style="color: #000000;">)</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">read&nbsp;OK!\n</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;</span><span style="color: #000000;">/*</span><span style="color: #000000;">&nbsp;buf[excursion]</span><span style="color: #000000;">=</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">\0</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;">;</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(argc</span><span style="color: #000000;">==</span><span style="color: #800000;">3</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;&nbsp;strcmp(argv[</span><span style="color: #800000;">2</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">sync</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">==</span><span style="color: #800000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((&nbsp;outfile_fd</span><span style="color: #000000;">=</span><span style="color: #0000ff;">open</span><span style="color: #000000;">(argv[</span><span style="color: #800000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #000000;">O_RDWR</span><span style="color: #000000;">|</span><span style="color: #000000;">O_CREAT</span><span style="color: #000000;">|</span><span style="color: #000000;">O_SYNC</span><span style="color: #000000;">,</span><span style="color: #800000;">0666</span><span style="color: #000000;">))</span><span style="color: #000000;">&lt;</span><span style="color: #800000;">0</span><span style="color: #000000;">)err_sys(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">creat&nbsp;error</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(argc</span><span style="color: #000000;">==</span><span style="color: #800000;">2</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;((&nbsp;outfile_fd</span><span style="color: #000000;">=</span><span style="color: #0000ff;">open</span><span style="color: #000000;">(argv[</span><span style="color: #800000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #000000;">O_RDWR</span><span style="color: #000000;">|</span><span style="color: #000000;">O_CREAT</span><span style="color: #000000;">,</span><span style="color: #800000;">0666</span><span style="color: #000000;">))</span><span style="color: #000000;">&lt;</span><span style="color: #800000;">0</span><span style="color: #000000;">)err_sys(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">creat&nbsp;error</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">para&nbsp;error!\n</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);</span><span style="color: #0000ff;">exit</span><span style="color: #000000;">(</span><span style="color: #800000;">1</span><span style="color: #000000;">);}<br>&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;size</span><span style="color: #000000;">=</span><span style="color: #800000;">1024</span><span style="color: #000000;">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;fflush(stdin);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">BUFFSIZE&nbsp;&nbsp;USER&nbsp;CPU&nbsp;&nbsp;SYSTEM&nbsp;CPU&nbsp;&nbsp;REAL&nbsp;TIMES&nbsp;&nbsp;CIRCLE&nbsp;TIMES\n</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;&nbsp;n;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">p</span><span style="color: #000000;">=</span><span style="color: #000000;">buf;<br>&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;&nbsp;redo_count;</span><span style="color: #000000;">/*</span><span style="color: #000000;">re&nbsp;</span><span style="color: #0000ff;">do</span><span style="color: #000000;">&nbsp;copy&nbsp;</span><span style="color: #0000ff;">times</span><span style="color: #000000;">*/</span><span style="color: #000000;">&nbsp;<br><br>&nbsp;&nbsp;</span><span style="color: #0000ff;">do</span><span style="color: #000000;">{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((start</span><span style="color: #000000;">=</span><span style="color: #0000ff;">times</span><span style="color: #000000;">(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">tmsstart))</span><span style="color: #000000;">==-</span><span style="color: #800000;">1</span><span style="color: #000000;">)err_sys(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">times&nbsp;error</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redo_count</span><span style="color: #000000;">=</span><span style="color: #800000;">0</span><span style="color: #000000;">;</span><span style="color: #000000;">/*</span><span style="color: #000000;">it&nbsp;is&nbsp;very&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;to&nbsp;set&nbsp;the&nbsp;counter&nbsp;zero&nbsp;at&nbsp;every&nbsp;circle&nbsp;</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000;">=</span><span style="color: #800000;">1</span><span style="color: #000000;">;</span><span style="color: #000000;">/*</span><span style="color: #000000;">it&nbsp;is&nbsp;</span><span style="color: #0000ff;">use</span><span style="color: #000000;">&nbsp;in&nbsp;the&nbsp;inside&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">((n</span><span style="color: #000000;">=</span><span style="color: #0000ff;">write</span><span style="color: #000000;">(outfile_fd</span><span style="color: #000000;">,</span><span style="color: #000000;">p</span><span style="color: #000000;">,</span><span style="color: #000000;">size))</span><span style="color: #000000;">==</span><span style="color: #000000;">size)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;p</span><span style="color: #000000;">+=</span><span style="color: #000000;">size;</span><span style="color: #000000;">/*</span><span style="color: #000000;">the&nbsp;begin&nbsp;buf&nbsp;must&nbsp;increase&nbsp;every&nbsp;</span><span style="color: #0000ff;">time</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redo_count</span><span style="color: #000000;">++</span><span style="color: #000000;">;</span><span style="color: #000000;">/*</span><span style="color: #000000;">count&nbsp;how&nbsp;many&nbsp;</span><span style="color: #0000ff;">times</span><span style="color: #000000;">&nbsp;circle&nbsp;</span><span style="color: #0000ff;">do</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000;">=</span><span style="color: #000000;">size</span><span style="color: #000000;">*</span><span style="color: #000000;">redo_count;</span><span style="color: #000000;">/*</span><span style="color: #000000;">one&nbsp;tag&nbsp;to&nbsp;count&nbsp;how&nbsp;many&nbsp;charaters&nbsp;we&nbsp;have&nbsp;travered</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/*</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">excursion==%d&nbsp;&nbsp;t==%d&nbsp;&nbsp;&nbsp;excursion-t==%d&nbsp;&nbsp;size==%d\n</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">excursion</span><span style="color: #000000;">,</span><span style="color: #000000;">t</span><span style="color: #000000;">,</span><span style="color: #000000;">excursion</span><span style="color: #000000;">-</span><span style="color: #000000;">t</span><span style="color: #000000;">,</span><span style="color: #000000;">size);</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((excursion</span><span style="color: #000000;">-</span><span style="color: #000000;">t)</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">size)break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(excursion</span><span style="color: #000000;">-</span><span style="color: #000000;">t</span><span style="color: #000000;">&gt;</span><span style="color: #800000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #0000ff;">write</span><span style="color: #000000;">(outfile_fd</span><span style="color: #000000;">,</span><span style="color: #000000;">p</span><span style="color: #000000;">,</span><span style="color: #000000;">excursion</span><span style="color: #000000;">-</span><span style="color: #000000;">t)</span><span style="color: #000000;">!=</span><span style="color: #000000;">(excursion</span><span style="color: #000000;">-</span><span style="color: #000000;">t))err_sys(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">read&nbsp;error</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((end</span><span style="color: #000000;">=</span><span style="color: #0000ff;">times</span><span style="color: #000000;">(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">tmsend))</span><span style="color: #000000;">==-</span><span style="color: #800000;">1</span><span style="color: #000000;">)err_sys(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">times&nbsp;error</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">%7ld</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">size);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pr_times(end</span><span style="color: #000000;">-</span><span style="color: #000000;">start</span><span style="color: #000000;">,&amp;</span><span style="color: #000000;">tmsstart</span><span style="color: #000000;">,&amp;</span><span style="color: #000000;">tmsend);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">%7ld\n</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">redo_count);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lseek(outfile_fd</span><span style="color: #000000;">,</span><span style="color: #800000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">SEEK_SET);</span><span style="color: #000000;">/*</span><span style="color: #000000;">let&nbsp;the&nbsp;outfile&nbsp;pointer&nbsp;go&nbsp;back&nbsp;to&nbsp;the&nbsp;beginning&nbsp;of&nbsp;outfile</span><span style="color: #000000;">!*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #000000;">=</span><span style="color: #000000;">buf;</span><span style="color: #000000;">/*</span><span style="color: #000000;">let&nbsp;p&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;to&nbsp;the&nbsp;beginning&nbsp;of&nbsp;buf;</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">/*</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">size=%d&nbsp;&nbsp;excursion=%d\n</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">size</span><span style="color: #000000;">,</span><span style="color: #000000;">excursion);</span><span style="color: #000000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">((size</span><span style="color: #000000;">*=</span><span style="color: #800000;">2</span><span style="color: #000000;">)</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">excursion);<br>&nbsp;&nbsp;<br></span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">0</span><span style="color: #000000;">;<br>}<br>static&nbsp;void<br>pr_times(clock_t&nbsp;real&nbsp;</span><span style="color: #000000;">,</span><span style="color: #000000;">struct&nbsp;tms&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">tmsstart</span><span style="color: #000000;">,</span><span style="color: #000000;">struct&nbsp;tms&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">tmsend)<br>{static&nbsp;long&nbsp;clktck</span><span style="color: #000000;">=</span><span style="color: #800000;">0</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(clktck</span><span style="color: #000000;">==</span><span style="color: #800000;">0</span><span style="color: #000000;">)<br>&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((clktck</span><span style="color: #000000;">=</span><span style="color: #000000;">sysconf(_SC_CLK_TCK))</span><span style="color: #000000;">&lt;</span><span style="color: #800000;">0</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">sysconf&nbsp;error</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br><br></span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">&nbsp;&nbsp;&nbsp;%2.5f</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">(tmsend</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">tms_utime</span><span style="color: #000000;">-</span><span style="color: #000000;">tmsstart</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">tms_utime)</span><span style="color: #000000;">/</span><span style="color: #000000;">(double)clktck);<br></span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">&nbsp;&nbsp;&nbsp;%2.5f</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">(tmsend</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">tms_stime</span><span style="color: #000000;">-</span><span style="color: #000000;">tmsstart</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">tms_stime)</span><span style="color: #000000;">/</span><span style="color: #000000;">(double)clktck);<br></span><span style="color: #0000ff;">printf</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%2.5f&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">real</span><span style="color: #000000;">/</span><span style="color: #000000;">(double)clktck);<br>}&nbsp;<br>&nbsp;</span></div>
<br><img src ="http://www.cppblog.com/newplan/aggbug/37099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2007-11-21 18:45 <a href="http://www.cppblog.com/newplan/archive/2007/11/21/37099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>unix_简单shell实现</title><link>http://www.cppblog.com/newplan/archive/2007/11/06/35991.html</link><dc:creator>山泉弯延</dc:creator><author>山泉弯延</author><pubDate>Tue, 06 Nov 2007 15:18:00 GMT</pubDate><guid>http://www.cppblog.com/newplan/archive/2007/11/06/35991.html</guid><wfw:comment>http://www.cppblog.com/newplan/comments/35991.html</wfw:comment><comments>http://www.cppblog.com/newplan/archive/2007/11/06/35991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/newplan/comments/commentRss/35991.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/newplan/services/trackbacks/35991.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">apue.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">sys</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">wait.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>extern&nbsp;&nbsp;char&nbsp;</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">environ;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>static&nbsp;void&nbsp;sign_Int(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;signnal)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Be&nbsp;interrupted\n%%</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>static&nbsp;void&nbsp;sign_Quit(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;signnal)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">quit\n%%</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>main(void)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">argv[</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;pid_t&nbsp;pid;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;status;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(signal(SIGINT,sign_Int)</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">SIG_ERR)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err_sys(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">signal&nbsp;error\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(signal(SIGQUIT,sign_Quit)</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">SIG_ERR)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err_sys(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">signal&nbsp;error\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%%</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;buf[MAXLINE];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;index</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(fgets(buf,MAXLINE,stdin)</span><span style="COLOR: #000000">==</span><span style="COLOR: #0000ff">NULL</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(&nbsp;buf[i]&nbsp;!</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">\0'&amp;&amp;buf[i]!='\n'&nbsp;)</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(buf[i]&nbsp;!</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">&nbsp;'&nbsp;)</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argv[index]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;buf</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(;buf[i]!</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">&nbsp;'&amp;&amp;buf[i]!='\n';i++);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(buf[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">\n')</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">\0';</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(buf[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">&nbsp;')&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #008000">'</span><span style="COLOR: #008000">\0';</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argv[index]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">NULL</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fork()&nbsp;)&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err_sys(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">fork&nbsp;error\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;pid&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;execve(argv[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],argv,environ);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err_ret(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">coundn't&nbsp;execute:%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,argv[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">exit</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">127</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((&nbsp;pid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;waitpid(pid,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">status,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">))&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err_sys(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">waitpid&nbsp;error\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%%</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">exit</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<img src ="http://www.cppblog.com/newplan/aggbug/35991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/newplan/" target="_blank">山泉弯延</a> 2007-11-06 23:18 <a href="http://www.cppblog.com/newplan/archive/2007/11/06/35991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>