当前位置: 技术问答>linux和unix
使用fork()创建进程
来源: 互联网 发布时间:2015-12-05
本文导语: 初学fork(),写了以下程序: #include #include int main(void) { int i; int n; n=4; for(i=0;i C1 循环2: P1 -> C2, C1 -> C11 循环3: P1 -> C3, C1 -> C12, C11 -> C111, C2 -> C21 循环4: P1 -> C4, C1 -> C13, C11 -> C112, C111 -> C11...
初学fork(),写了以下程序:
#include
#include
int main(void)
{
int i;
int n;
n=4;
for(i=0;i C1
循环2: P1 -> C2, C1 -> C11
循环3: P1 -> C3, C1 -> C12, C11 -> C111, C2 -> C21
循环4: P1 -> C4, C1 -> C13, C11 -> C112, C111 -> C1111
C12-> C121, C2 -> C22, C21 -> C212 , C3 -> C31
这样生成了16个进程,就打了16个hello
我也是刚学linux,不知有没有写错,大家帮忙给看下吧。
#include
#include
int main(void)
{
int i;
int n;
n=4;
for(i=0;i C1
循环2: P1 -> C2, C1 -> C11
循环3: P1 -> C3, C1 -> C12, C11 -> C111, C2 -> C21
循环4: P1 -> C4, C1 -> C13, C11 -> C112, C111 -> C1111
C12-> C121, C2 -> C22, C21 -> C212 , C3 -> C31
这样生成了16个进程,就打了16个hello
我也是刚学linux,不知有没有写错,大家帮忙给看下吧。
|
很有意思的代码,fork出来子孙进程应该是15个,加上父进程本身就会打印出16个hello,
执行过程如下
i=1 i=2 i=3
i=0 |--C11--|--C111--C1111--exit
|--C1--| |
| | |--C112(i=3)--exit
| | i=2
| |--C12----C121(i=3)--exit
| |
| |--C13(i=3)--exit
|
|--C2(i=1)-|-C21(i=2)--C211(i=3)--exit
| |
P1-| |-C22(i=3)--exit
|
|--C3(i=2)--C31(i=3)--exit
|
|--C4(i=3)--exit
执行过程如下
i=1 i=2 i=3
i=0 |--C11--|--C111--C1111--exit
|--C1--| |
| | |--C112(i=3)--exit
| | i=2
| |--C12----C121(i=3)--exit
| |
| |--C13(i=3)--exit
|
|--C2(i=1)-|-C21(i=2)--C211(i=3)--exit
| |
P1-| |-C22(i=3)--exit
|
|--C3(i=2)--C31(i=3)--exit
|
|--C4(i=3)--exit