[理工] [OS] 99暨大資工

看板Grad-ProbAsk作者 (nu)時間11年前 (2012/11/04 12:44), 編輯推噓3(309)
留言12則, 3人參與, 最新討論串1/1
題目: What are the possible output of the following program? (Assume the new process is created successfully.) #include <sys/types.h> #include <stdio.h> #include <unistd.h> int main() { int value=101; if(fork()<=0) { value += 22; printf("The value is %d\n",value); } else { printf("The value is %d\n",value); wait(NULL); } printf("Over with %d\n",value); } 解: (1) The value is 123 Over with 123 The value is 101 Over with 101 (2) The value is 123 The value is 101 Over with 123 Over with 101 (3) The value is 101 The value is 123 Over with 123 Over with 101 問題: 想請問以上三個答案是怎麼來的? 感謝各位耐心看完題目及問題,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.221.223

11/04 17:06, , 1F
第一個就子先全部印完 父才印
11/04 17:06, 1F

11/04 17:06, , 2F
第二個就子印完123 還沒印OVER...就被父搶走印101
11/04 17:06, 2F

11/04 17:07, , 3F
父還沒印OVER...就被子搶走印OVER 最後父印OVER
11/04 17:07, 3F

11/04 17:08, , 4F
第二個說錯了 父有WAIT(NULL)要等子做完才能印OVER
11/04 17:08, 4F

11/04 17:09, , 5F
第三個則是父先印101 還沒印OVER被子搶走印123 然後子印
11/04 17:09, 5F

11/04 17:09, , 6F
OVER 父在印OVER
11/04 17:09, 6F

11/04 20:53, , 7F
感謝B大的回答。
11/04 20:53, 7F

11/04 20:54, , 8F
想請問如果父先印101,此時沒被子搶走,所以印OVER。然後子
11/04 20:54, 8F

11/04 20:55, , 9F
進印123,再印OVER,為什麼這種情況不能算?
11/04 20:55, 9F

11/04 21:07, , 10F
父有WAIT 所以一定要等子做完123跟OVER
11/04 21:07, 10F

11/04 23:15, , 11F
嗯嗯,我懂了。謝謝B大的回答。
11/04 23:15, 11F

11/17 22:34, , 12F
有用到給推
11/17 22:34, 12F
文章代碼(AID): #1GbVARtG (Grad-ProbAsk)