簡體   English   中英

C:fork()子進程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM