赞
踩
- #include <stdio.h>
- #include<sys/types.h>
- #include<unistd.h>
- #include<stdlib.h>
- #include<wait.h>
-
- int main()
-
- { int p1,p2,p3,p4,p5,pp1,pp2;
-
- printf("程序开始执行");
-
- if ((p1 = fork())== 0){
-
- printf("进程proc1执行");
-
- exit(1);
-
- } else
-
- if ((p2=fork())== 0){
-
- printf("进程proc2执行");
-
- exit(1);
-
- }
-
- pp1 =wait(&pp1); /*等待,直到子进程终止*/
-
- pp2 =wait(&pp2); /*等待,直到子进程终止*/
-
- if ((p3=fork())== 0){
-
- printf("进程proc3执行");
-
- } else
-
- if((p4=fork())== 0){
-
- printf("进程proc4执行");
-
- } else
-
- if((p5=fork())== 0){
-
- printf("进程proc4执行");
-
- exit(1);
-
- }
-
- printf("整个程序终止");
-
- exit(0);
-
- }
试回答如下问题:
(1)画出描述子进程执行先后次序的进程流图。(各进程分别用其对应的函数名或包含其进程号的符号名标识)。
(2)这个程序执行时最多可能有几个进程同时存在?同时存在的进程数最多时分别是哪几个进程?
(3)程序执行时,“整个程序终止”被输出几次?分别是哪些进程输出的?
Linux Centos 实际运行结果
分析代码可得最多可能存在4个进程 即 Main proc3 proc4 proc5
由运行结果可以看出,“整个程序终止”被输出3次,分别由Main proc3 proc4 输出
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。