[英]Understanding the fork system call in UNIX
我試圖同時了解之前給我的代碼行的執行順序和使用fork()
系統調用進行的流程創建。 它使用C語言在UNIX上運行。
我了解了fork()
背后的主要概念,但是我想了解從以下代碼行派生的流程樹的創建:
x = fork() || !fork();
任何幫助將不勝感激!
運行代碼的初始父進程(假設它是PID = 1000
),執行x = fork()
部分,並產生一個新的子進程(假設PID = 1001
)。
對於進程PID = 1000
,到目前為止,邏輯表達式的值非零,因為fork(2)
返回其子項的pid
。 因此,由於短路評估 ,邏輯表達式的其余部分由於不需要而未評估。
對於流程PID = 1001
,到目前為止,邏輯表達式的值為0
,因為在創建新流程的情況下, fork(2)
返回0
。 因此它也必須評估邏輯表達式的其余部分。 它執行!fork()
部分,產生一個新進程(假設PID = 1002
)。
派生的過程樹如下:
1000
|
|
1001
|
|
1002
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.