...
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/