本文共 989 字,大约阅读时间需要 3 分钟。
通过这段时间的学习,对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下面会打印一个三代的家谱!
转载地址:http://aaqbb.baihongyu.com/