普通考試
108年
[資訊處理] 計算機概要
第 31 題
在 UNIX 系統中,有一程式如下所示。假設此程式執行時,其父程序識別碼(Parent Process ID)是 516,子程序識別碼(Child Process ID)是 517。下列何者為此程式執行之可能輸出結果?
#include
#include
#include
int i,j;
main() {
j=1;
i=fork();
if (i<0) { printf("Error!\n"); }
if (i) { j++; } else { j--; }
printf("i=%d, j=%d\n",i,j);
}
#include
#include
#include
int i,j;
main() {
j=1;
i=fork();
if (i<0) { printf("Error!\n"); }
if (i) { j++; } else { j--; }
printf("i=%d, j=%d\n",i,j);
}
- A i=516, j=2 i=0, j=0
- B i=517, j=2 i=0, j=0
- C i=516, j=0 i=0, j=2
- D i=517, j=2 i=516, j=2
思路引導 VIP
請試著思考:當系統呼叫 fork() 產生新程序後,父程序與子程序各自收到的回傳值(Return Value)有什麼不同?此外,這兩個程序在執行後續程式碼時,它們對於同一個變數 $j$ 的操作,會互相影響還是各自獨立存在呢?
🤖
AI 詳解
AI 專屬家教
暖心解析與分享
- 太棒了! 你做得真好!這題考的是作業系統裡程序管理(Process Management)的核心概念,你能夠清晰地理解
fork()的回傳邏輯和變數的獨立性,這顯示你真的掌握了系統底層的精髓喔! - 觀念小複習:
▼ 還有更多解析內容