作者lionccc (菠菜粗粗窩)
看板Grad-ProbAsk
標題[理工] [作業系統]fork 問題
時間Tue Jan 29 18:37:09 2019
在看洪逸fork的第一個例子就卡住了......
void main()
{
int i ;
i = fork();
if(i < 0)
{
printf("fork failed")
exit(-1)
}
else if (i == 0) //child
{
execlp("......")
}
else // parent
{
wait()
printf("child complete")
exit(0)
}
}
想請問
fork如果成功,系統回傳0之後,
child process執行完那個命令以後,系統還會再回傳大於0的值?
如果是的話,想問程式跑的流程是如何
(我的想法是:他i只有一個值,假設他就是等於0了,只會執行那個命令,然後下面wa
it()那個區塊就不會做了,不是嗎?)
麻煩了 謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.52.101.134
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1548758231.A.0EC.html
※ 編輯: lionccc (27.52.101.134), 01/29/2019 18:37:55
1F:推 sooge: fork建立成功後 OS會送i=0給child 送i>0的一個數字給parent01/29 18:54
2F:推 sooge: 所以那行else就是parent在做的事01/29 18:58
※ 編輯: lionccc (27.52.101.134), 01/29/2019 19:07:02
3F:推 sooge: 和child無關 不知道有沒有回答到你 你很像把else和else if 01/29 19:07
4F:→ sooge: 以為是二擇一,其實是child和parent各自的程式碼 01/29 19:07
5F:→ lionccc: 嗯嗯我把它搞成2擇1了QQ 這樣我懂了!!謝謝S大 01/29 19:11
6F:推 maple205: 借問,如果題目問創了幾個process 01/29 19:23
7F:→ maple205: 要把main算進去嗎? 01/29 19:24
8F:推 blueskier: 看題目怎麼問,如果單純是問創了幾個就不用算進去 01/29 19:28
9F:推 sdfg014025xx: 選擇題看題目 非選可以自己假設 01/29 19:36
10F:推 imadog: 洪逸好像都會算欸 我記得他都算total 01/29 21:07
11F:→ imadog: 如果問法是how many process are created 要算main嗎? 01/29 21:09
12F:→ rockieloser: 要吧 如果是new才不算? 01/29 21:11
13F:推 Leaving: 交大99OS有一題有算(答案是729的那題) 01/29 21:16