[問題] fork 問題

看板C_and_CPP (C/C++)作者 (阿通)時間15年前 (2011/05/05 22:32), 編輯推噓0(0014)
留言14則, 3人參與, 最新討論串1/2 (看更多)
我有一個fork的問題想請教, 有一行指令為 if(fork()!=0) 那他是邊判斷邊創新程序? 還是先創後判斷,還是反之? 有點不了解他的動作順序... 請各位解惑 多謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.40.219

05/05 22:37, , 1F
先創後判斷,判斷的就是創立程序的"結果"
05/05 22:37, 1F

05/05 22:44, , 2F
恩 了解 那創的子程序就是if的下一行開始執行?
05/05 22:44, 2F

05/05 22:52, , 3F
http://pastie.org/1868205 知道這個程式的結果與原因嗎?
05/05 22:52, 3F

05/05 23:32, , 4F
在執行到fork()時,
05/05 23:32, 4F

05/05 23:33, , 5F
產生新的process,然後兩個互相競爭,其產生的process
05/05 23:33, 5F

05/05 23:33, , 6F
會重fork的下一行開始執行,所以會印出2個hello
05/05 23:33, 6F

05/05 23:34, , 7F
我的認知是這樣,可是加入if()裡就覺得很難想像.
05/05 23:34, 7F

05/06 00:09, , 8F
那如果寫成這樣的話? http://pastie.org/1868465
05/06 00:09, 8F

05/06 00:23, , 9F
pid =fork(),然後先產生新process,此時一樣新的process
05/06 00:23, 9F

05/06 00:25, , 10F
會從下一行開始執行,假如是新的先做完,就印child,反之
05/06 00:25, 10F

05/06 00:25, , 11F
是這樣嗎?
05/06 00:25, 11F

05/06 02:02, , 12F
嚴格說起來, child process 算是從 "fork() returns" 開始執
05/06 02:02, 12F

05/06 02:03, , 13F
行. child & parent 在那個時間點唯一的差別是 fork() 的回傳
05/06 02:03, 13F

05/06 02:03, , 14F
值不同.
05/06 02:03, 14F
文章代碼(AID): #1DmhKB7g (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DmhKB7g (C_and_CPP)