[理工] [作業系統]fork 問題

看板Grad-ProbAsk作者 (菠菜粗粗窩)時間6年前發表 (2019/01/29 10:37), 6年前編輯推噓8(805)
留言13則, 8人參與, 6年前最新討論串1/1
在看洪逸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://www.ptt.cc/bbs/Grad-ProbAsk/M.1548758231.A.0EC.html ※ 編輯: lionccc (27.52.101.134), 01/29/2019 18:37:55

01/29 18:54, 6年前 , 1F
fork建立成功後 OS會送i=0給child 送i>0的一個數字給parent
01/29 18:54, 1F

01/29 18:58, 6年前 , 2F
所以那行else就是parent在做的事
01/29 18:58, 2F
※ 編輯: lionccc (27.52.101.134), 01/29/2019 19:07:02

01/29 19:07, 6年前 , 3F
和child無關 不知道有沒有回答到你 你很像把else和else if
01/29 19:07, 3F

01/29 19:07, 6年前 , 4F
以為是二擇一,其實是child和parent各自的程式碼
01/29 19:07, 4F

01/29 19:11, 6年前 , 5F
嗯嗯我把它搞成2擇1了QQ 這樣我懂了!!謝謝S大
01/29 19:11, 5F

01/29 19:23, 6年前 , 6F
借問,如果題目問創了幾個process
01/29 19:23, 6F

01/29 19:24, 6年前 , 7F
要把main算進去嗎?
01/29 19:24, 7F

01/29 19:28, 6年前 , 8F
看題目怎麼問,如果單純是問創了幾個就不用算進去
01/29 19:28, 8F

01/29 19:36, 6年前 , 9F
選擇題看題目 非選可以自己假設
01/29 19:36, 9F

01/29 21:07, 6年前 , 10F
洪逸好像都會算欸 我記得他都算total
01/29 21:07, 10F

01/29 21:09, 6年前 , 11F
如果問法是how many process are created 要算main嗎?
01/29 21:09, 11F

01/29 21:11, 6年前 , 12F
要吧 如果是new才不算?
01/29 21:11, 12F

01/29 21:16, 6年前 , 13F
交大99OS有一題有算(答案是729的那題)
01/29 21:16, 13F
文章代碼(AID): #1SK2pN3i (Grad-ProbAsk)