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