zoukankan      html  css  js  c++  java
  • [Chapter 3 Process]Practice 3.12 Including the initial parent process, how many processes are created by the program shown in Figure 3.32?

    3.12 Including the initial parent process, how many processes are created by the program shown in Figure 3.32?

    答案: 共16个进程。

    解析:

      根据之前所学到的关于fork的知识去画进程图, 要注意的一点就是, fork的子进程的程序计数器里的指令和父进程的相同, 所以每次fork之后, 子进程里i的值都会继续增加。例如, 第一个进程, i=0时, fork的子进程的i会继续++, 从1开始。 下面是此题的进程图。

    jk

    红色的数字是进程的PID, PID是我当时写的一个程序得到的, 代码如下:

     1 #include<stdio.h>
     2 #include<unistd.h>
     3 #include<sys/types.h>
     4 
     5 
     6 int main()
     7 {
     8     char p = 'c';
     9     int i;
    10     FILE *fp;
    11     pid_t pid;
    12     printf("%d
    ", getpid());
    13 
    14 
    15     fp = fopen("data.txt", "a+");
    16     for(i = 0; i < 4; i++){
    17         if(fork() > 0){
    18             printf("%c %d
    ", p = 'p', i);
    19         }
    20         else
    21             printf("%c %d
    ", p, i);
    22         wait(NULL);
    23     }
    24     fprintf(fp, "%d %d
    ", getppid(), getpid());
    25 
    26     fclose(fp);
    27     return 0;
    28 }
  • 相关阅读:
    Bootstrap(6)图标菜单按钮组件
    Bootstrap(6)辅组类和响应式工具
    Bootstrap(5)栅格系统
    Bootstrap(4) 表单和图片
    Bootstrap(3) 表格与按钮
    Bootstrap(2) 排版样式
    Bootstrap(1) 概述与环境搭建
    requirejs简单应用
    Validate常用校验
    VSS2005源代码管理启用http方式
  • 原文地址:https://www.cnblogs.com/KarryWang/p/3450241.html
Copyright © 2011-2022 走看看