linux fork “\n”重新整理緩衝區問題

來源:互聯網
上載者:User
參考:http://www.cnblogs.com/guoqiaojin/archive/2012/08/24/2653609.html 
 
asic (阿塞克) 於Mon Jul 16 12:48:46 2012)提到:int main() {printf("hello ");fork();printf("world\n");}執行結果是列印了兩行 hello world和我之前所理解的不一樣,我理解的是父進程執行到fork()函數才產生子進程,這樣的話應該是列印一個hello和兩個world 求版內大神科普下,拜謝!OP07 (【EE07】打雷『齊魯』) 於Mon Jul 16 13:44:27 2012)提到:這個問題出在printf他是有資料緩衝區的,不加\n資料不重新整理fork()建立子進程時,子進程複製了父進程的資料區段和堆棧段包括printf的資料緩衝區也被複製再執行後面的printf列印重新整理當然就是兩遍hello world了要是改成printf("hello \n");就一遍hello兩遍world了asic (阿塞克) 於Mon Jul 16 14:40:51 2012)提到:豁然開朗,多謝大神!asic (阿塞克) 於Mon Jul 16 14:53:33 2012)提到:試了一下,果然是這樣的另外把程式改成下面這樣,列印的兩句果真都是父進程的PIDint main() {printf("hello:pid=%d",getpid());fork();printf("world\n");}chuan92 (數星河) 於Mon Jul 16 15:39:58 2012)提到:學習了,以前只知道fflush(stdout),原來\n也可以。oinil (Raison d'être) 於Mon Jul 16 18:03:59 2012)提到:頂!學習了bsidb (淡藍天際的星光) 於Mon Jul 16 19:29:56 2012)提到:學習之~~原來理論和實際還是有距離的~NotYou (【姑蘇】陸草純) 於Mon Jul 16 20:26:19 2012)提到:就是這樣,以前類似問題向jyy大神請教過,bankq (Ripa) 於Mon Jul 16 22:32:29 2012)提到:原來\n會重新整理,學習了!mutalisk (mutalisk) 於Wed Jul 18 20:15:15 2012)提到:預設終端是行緩衝的  檔案是全緩衝的分行符號會重新整理終端,但是檔案不會
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.