小编pei*_*ean的帖子

使用fork在C中创建n个子进程

我在geeks4geeks中找到了此代码,但我似乎无法正确理解它:

#include<stdio.h> 


int main() 
{ 
    for(int i=0;i<5;i++) // loop will run n times (n=5) 
    {  pid_t c=fork();
        if(c == 0) 
        { 
            printf("[son] pid %d from [parent] pid %d\n",getpid(),getppid()); 
            exit(0); 
        } 
    } 
    for(int i=0;i<5;i++) // loop will run n times (n=5) 
    wait(NULL); 

} 
Run Code Online (Sandbox Code Playgroud)

这段代码从父进程创建5个进程并从每个子进程打印一条消息。我的问题是:由于我们没有对c使用任何限制,例如不是父进程和第一个子进程都执行了第二个fork?在父亲代码中隔离fork,此代码如何不创建2 ^ 5个子进程?for循环是否以某种方式阻止了这种情况的发生?

c operating-system

1
推荐指数
1
解决办法
62
查看次数

标签 统计

c ×1

operating-system ×1