[英]C: fork() child processes
根據我正在閱讀的教科書,下面的代碼創建N個子進程,這些進程將以唯一狀態退出。
/* Parent creates N children */
for (i = 0; i < N; i++)
if ((pid[i] = Fork()) == 0) /* Child */
exit(100+i);
在教科書的早些時候,它聲明以下代碼將有8行輸出:
int main(){
Fork();
Fork();
Fork();
printf("hello\n");
exit(0);
}
這讓我相信有2 ^ n個子進程,其中n是fork()被調用的次數。 原因是第一個代碼只生成N個子進程(而不是2 ^ N),因為子進程每次都退出,所以在調用后續的fork()時,它只在父進程上運行?
每次成功調用fork()
都會創建一個新進程。
在第一個例子中,子進程( fork()
的返回值為0
)調用exit();
,這意味着他們不會調用下一個fork()
。
在第二個示例中,每個子進程都繼續分叉。
調用fork()時,它會復制父數據並從該點開始單獨執行。 因此,父或子的執行取決於進程的調度。 無論是孩子還是父母,無論哪個進程獲得cpu時間都將被執行。 我們必須注意哪個代碼應該由哪個進程(子進程或進程)運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.