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