線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1377
推到 Plurk!
推到 Facebook!

能不能解釋一下這個程式,關於 fork() 的

答題得分者是:ikk
lizemountain
一般會員


發表:6
回覆:6
積分:2
註冊:2007-02-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-04 11:35:20 IP:118.169.xxx.xxx 訂閱
其實我一直搞不懂fork()這個函式執行完後,程式到底從哪繼續下去



[code cpp]
int main()
{
int status;
pid_t pid;

printf("first\n");

pid = fork();

if( pid != 0 )
{
waitpid(-1 , &status , 0);
printf("second\n");
}
else
printf("third\n");
printf("fourth\n");
}

[/code]

上面程式跑出來的結果是
first
third
fourth
second
fourth

可否告訴我程式的流程是怎麼跑的?
這整個程式碼是給parent和child共用嗎?
如果是共用,我要怎麼知道什麼時候是parent什麼時候是child
程式執行的過程中,pid的數值會一直改變嗎?
不好意思...問題很多也很亂...我真的很想弄懂這些觀念
編輯記錄
lizemountain 重新編輯於 2008-12-04 11:39:25, 註解 無‧
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-04 17:22:00 IP:163.28.xxx.xxx 訂閱
是共同使用沒錯,
如果是parent, 回傳的pid是 child的pid.
如果回傳的是 0 , 就是child了.
------
FPGA驗證, FPGA開發平台, http://smims.com
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-05 02:29:02 IP:59.115.xxx.xxx 訂閱
再給你一個補充:

http://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/create.html

有圖的喔,英文還可以的話你就可以懂了
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-04-27 7:15:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!