...
int main(void)
{
    int i;
    for(i=0;i<2;i++){
      switch(fork()){
        case 0:
          sleep(1);
          break;
        default:
          sleep(1);
       }
    }
    while(i--) wait(NULL);
    return 0;
}

你好。我在试着理解过程和叉子。
我不确定这个代码片段创建了多少个进程。
1对于主程序,则主程序复制自身(创建子进程),然后子程序复制自身(2个子进程和主进程)。
所以这是3个过程。
我是对的还是我遗漏了什么?

最佳答案

主线程(t1)中有一个for循环,它将调用fork()两次(>t1.1,t1.2)。第一个分叉线程(t1.1)还有一个迭代,因此它创建了另一个(->t1.1.1)。t1.2和t1.1.1都没有更多的迭代,因此没有更多的线程分叉。
这给我们留下了4条线索

关于c - 该程序创建多少个进程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9981347/

10-11 23:09
查看更多