通过这段时间的学习,对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下面会打印一个三代的家谱!