多线程: fork的调用次数问题

如下代码:请问最终打印输出多少次hello?

#include
#include
#include
int main(){
    for(int i = 0; i < 5; ++i){
        pid_t t = fork();
    }
    printf("hello\n");
    return 0;
}

答案是32,即 2 5 2^5 25
可以理解为:每执行一次fork,进程就分裂成几乎完全一样的两个。进行了五次分裂。

如何控制fork的调用次数为任意值

可以根据fork的返回值判断当前进程是否为子进程,子进程不再执行fork。

#include
#include
#include
int main(){
    for(int i = 0; i < 5; ++i){
        pid_t t = fork();
        if(t == 0)break;
    }
    printf("hello\n");
    return 0;
}

这样就只会执行5次了

你可能感兴趣的:(C,c++,算法,c语言)