waitpid

waitpidは、プロセスIDを指定して、そのプロセスの終了などを待機できる。

Man page of WAIT
C言語forkメモ(Hishidama's C "fork" Memo)
Pythonでos.fork()で生成した複数の子プロセスが終了するまで待機する方法
7-4. ネットワークサービスは必ずforkしよう

5つの子プロセスをforkで作成し、0番目を1秒、1番目を2秒、・・・という感じでプロセス終了するようにして、親プロセスでwaitpidを使って、0番目から終了待機する。

親プロセスの出力と子プロセスの出力が上手く順番に出なかったので、ちょっといろいろいじった結果、このようにしたら、

$ vi waitpid.c
$ gcc waitpid.c -o waitpid
$ ./waitpid
pid = 16001
pid = 16002
pid = 16000
pid = 15999
pid = 15998
finished! child_pid_array[0] = 15998
pid = 16001
pid = 16002
pid = 16000
pid = 15999
finished! child_pid_array[1] = 15999
pid = 16001
pid = 16002
pid = 16000
finished! child_pid_array[2] = 16000
pid = 16002
pid = 16001
finished! child_pid_array[3] = 16001
pid = 16002
finished! child_pid_array[4] = 16002
all finished!
$

順番に待って、順番に終了のメッセージ出力が出来た。

Sample/unixsyscall/waitpid/waitpid/src/waitpid at master · bg1bgst333/Sample · GitHub