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