作者gn00618777 (123)
看板Grad-ProbAsk
標題Re: [理工] [os]-fork()程式
時間Fri Feb 12 00:15:28 2010
※ 引述《gn00618777 (123)》之銘言:
: 98年中央資工
: #include<sys/types.h>
: #include<stdio.h>
: #include<unistd.h>
: int value=10;
: int main()
: {
: pid_t pid;
: pid=fork();
: if(pid==0){
: value+=15;
: }
: else if(pid>0){
: wait(NULL);
: printf("PARENT:value=%d",value); /*LINE A*/
: exit(0);
: }
: }
:
@@這題我是覺得奇怪
父親那邊有wait表示要等子完成,可是父親等子完成,要是兒子做完了一定要回傳一個
值給父親他才知道兒子做完了他父親才可繼續做阿...
我記得洪x也有講過兒子如果執行exclp()的話,他裡面有內建的exit會回傳給父親
好讓他知道兒子做完了,但這題他只是一般的執行,兒子程式後面沒有寫exit(0)
那這樣父親不就不知道兒子到底做完了沒有..所以應該父親會卡在wait(NULL)那邊阿
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.138.109.190
推 kkman0120:就當作他會傳吧 不然這樣講的話題目這樣出不就沒結果了 02/12 00:30
→ gn00618777:那我這樣說合理嗎? 02/12 00:33
→ gn00618777:還有fork之後父與子的code section是不是一樣? 02/12 01:18
→ gn00618777:所以子和父所看到的所有程式碼都一樣包括上面的include 02/12 01:19
→ gn00618777:只是data section不同? 這是我看講義的想法 02/12 01:19
→ gn00618777:請問是正確的嗎? 02/12 01:19
推 ie925155:如果父親等兒子的話就表示兒子做父親的事 所以code 02/12 01:51
→ ie925155:section 是一樣的 02/12 01:51
→ ie925155:雖然你推論的有道理但是考試還是會假設有傳吧... 02/12 01:52
→ ie925155:還有疑慮的話寫出來給教授看你的疑慮分兩個寫阿 02/12 01:52
→ gn00618777:喔喔 ~~ 02/12 11:42