您的位置:首页 > 其它

针对fork()函数的深入理解!用事例family家谱来进行说明!

2012-04-14 14:07 399 查看
通过这段时间的学习,对fork()这个创建进程的函数进行深入的理解,通过一个family一个进程家谱进行查看进程与进程直接的关系。

首先要创建一个进程作为 爷爷 -> 父亲 -> 儿子

-> 女儿

->叔叔

->姑姑

通过一个三代的家谱来说明fork()函数在创建进程的时候是怎么确定进程关系的。

下面看代码部分:

#include<stdlib.h>

#include<stdio.h>

int main()

{

pid_t pid;

pid=fork();

if(pid==-1)

{

printf("error!\n");

exit(1);

}

else if(pid==0)

{

pid_t pid_1;

pid_1=fork();

printf("this is father!\n");

if(pid_1==-1)

{

printf("error!\n");

}

else if(pid_1==0)

{

printf("this is sunzi\n");

while(1);

}

else

{

printf("this is secend grandfather!\n");

pid_t pid4;

pid4=fork();

if(pid4==-1)

{

printf("error!\n");

}

else if(pid4==0)

{

printf("this is nuncle!\n");

while(1);

}

else

{

while(1);

}

while(1);

}

while(1);

}

else

{

printf("this is unt!\n");

pid_t pid2,pid3;

pid2=fork();

if(pid2==-1)

{

printf("error!\n");

}

else if(pid2==0)

{

while(1);

}

else

{

pid3=fork();

if(pid3==-1)

{

printf("error!\n");

}

else if(pid3==0)

{

while(1);

}

else

{

while(1);

}

while(1);

while(1);

}

while(1);

}

return 0;

}

运行程序的时候,另开一个终端,使用pstree就可以看到bash下面会打印一个三代的家谱!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: