[問題] 系統程式的問題

看板LinuxDev作者 (天生我材)時間11年前 (2014/04/02 15:48), 11年前編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
void main() { int td = 0; fork(); for ( int j = 0; j < 4; j++) { printf(" j = %d\n", j); fflush(stdout); td += j; } printf("td = %d\n", td); exit(0); } 請益一下這樣程式跑出來是會列出兩次資訊?? j=0 j=1 j=2 j=3 sum=6 同時印出兩次?? 不知道跟fflush(stdout); 會不會有影響?? fflush不是清空buffer內的資料嗎?? 那他還會再輸出裡面的資訊?? ------------------------------------------- 印一次 printf("hello\n"); //fflush(stdout); fork(); 印兩次 printf("hello\n"); fflush(stdout); fork(); ---------------------------------------------- 但是這兩個 輸出的結果卻是不一樣 有請高手解析困惑點,感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.12.135 ※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1396424892.A.C1C.html

04/03 12:22, , 1F
看不太懂你的問題是什麼,不過'\n'就會flush buffer了,
04/03 12:22, 1F

04/03 12:24, , 2F
fflush應該只是清空buffer內的資料,你的印兩次應該是fork
04/03 12:24, 2F

04/03 12:24, , 3F
造成的, 不是fflush引起的
04/03 12:24, 3F
我想問的是這段程式void main() 會執行幾次?? 下面的部分我只是參考來做比較?? 不知道上面的程式執行結果會是如何?? ※ 編輯: oklp1415 (114.27.124.145), 04/03/2014 14:54:57

04/03 16:29, , 4F
fork出去,所以parent process和child process各會執行一次
04/03 16:29, 4F

04/03 23:26, , 5F
04/03 23:26, 5F

04/03 23:29, , 6F
所以上面的程式會列印出兩次
04/03 23:29, 6F
文章代碼(AID): #1JEy2ymS (LinuxDev)
文章代碼(AID): #1JEy2ymS (LinuxDev)