[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\n", getpid());
13 
14 
15     fp = fopen("data.txt", "a+");
16     for(i = 0; i < 4; i++){
17         if(fork() > 0){
18             printf("%c %d\n", p = 'p', i);
19         }
20         else
21             printf("%c %d\n", p, i);
22         wait(NULL);
23     }
24     fprintf(fp, "%d %d\n", getppid(), getpid());
25 
26     fclose(fp);
27     return 0;
28 }

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM