操作系统习题 进程树 运行结果

#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 输出

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值