1
考慮以下 C 程式:
在 macOS 編譯並執行,得到以下程式輸出:
留意第 65 行 pid = fork();
敘述,fork
系統呼叫觸發後,會「分叉」執行單元為原本的 parent process 和新建立的 child process。從以下選項中挑出最符合的描述。
作答區
X = ?
(a)
在 macOS 和 GNU/Linux 有著完全不同的表現,上述輸出不僅 PID 數值不同,連 number =
的數值順序也不一樣(b)
在 child process 中,不具備 fork
前由 parent process 建立的 2 個執行緒 (Thread 1 和 2),這點符合 POSIX 規範中 fork 的語意(c)
受制於 mutex mut
的影響,致使 child process 內沒辦法繼續執行 Thread 1 和 2參考資料: Mutex lock for Linux Thread Synchronization
延伸題目:
pthread_atfork()
來改寫程式碼,使得 child/parent 兩個 process 的執行緒得以交替輸出