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 }
  • 相关阅读:
    挖地雷
    图的遍历
    数字三角形
    小凯的数字
    开心的金明
    ACM Training DAY 1
    ACM模板大整理
    [Java程序设计基础] Day 1 实验课 Java的环境配置与Java数组
    #寒假集训[20200113]
    #寒假集训[20200112]
  • 原文地址:https://www.cnblogs.com/KarryWang/p/3450241.html
Copyright © 2011-2022 走看看