當fork()遇上for循環~

vim test.c

寫入如下代碼

#include<unistd.h>
#include<stdio.h>
int main()
{
    for(int i=0;i<2;i++)
    {
        fork();
        printf("========\n");
        printf("i=%d\n",i);
    }
    printf("++++++++++++++\n");
    sleep(5);
    return 0;
}


gcc -o test test.c   編譯

./test   運行



輸出結果如下

注:這裏使用sleep的原因是爲了更好地顯示。讀者可以註釋掉sleep,編譯運行一下。

可以看出:

i=0  輸出兩次    所以第一次循環 創建了一個子進程

i=1  輸出四次     第二次循環創建了兩個子進程。

簡圖如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章