75.1. fork() を 2 回コールする

 fork() は現在あるプロセスから 1 個の子プロセスを生成します。

 じゃあ fork() をもう一回やると倍々ゲームで増えてくの?

 みたいな疑問を読者が持つのは自然な流れでしょうね。

 ええ… (´・ω・`)

 では検証してみましょう。

main.c. 

  1 #include <unistd.h>
  2 #include <stdio.h>
  3
  4 int main()
  5 {
  6   pid_t pid1,pid2;
  7   pid1 = fork();
  8   printf("pid1: %d\n",pid1);
  9   pid2 = fork();
 10   printf("pid2: %d\n",pid2);
 11
 12   return 0;
 13 }

ビルドと実行結果. 

$ gcc main.c
$ ./a.out
pid1: 9776
pid2: 9777
pid1: 0
pid2: 0
pid2: 9778
pid2: 0

 ソースコードは fork() を 2 回コールしてるだけです。

 出力を見ると pid1 には 1 個の子プロセス、pid2 には 2 個の子プロセスがありますね。

 pid2 は正確には孫プロセスと読んだ方が良さそうですが、以降の fork() が紛らわしいので、子プロセスと読んで起きましょう。

Copyright 2018-2019, by Masaki Komatsu