在 UNIX 環境執行以下 C 程式片段,請問 printf(j)的輸出結果為何? i=1; j=1;k=1; if((i=fork())==0) { j+=1; exit(j); } else { j+=1; wait(&k); j+=k; } printf(j); exit();
A3
B4正確答案
C5
D6
答案與詳解
fork 後父行程走 else:j=1+1=2;依出題意圖,子行程 exit(2) 使父 wait 取得 k=2;j=2+2=4。印出 4。(注:嚴格 POSIX 標準下 wait 回傳值需經 WEXITSTATUS 處理,k 應為 512,但選項無此答案,故依出題意圖選 B)
Examly 收錄 38 萬+ 道歷屆題目,每題都有像這樣的精選詳解。免費下載,立即開練。
