Linuxにおけるwaitpid関数の使用法を教えてください
Linuxでは、waitpid関数を使えば指定した子プロセスが終了するまで待つことができます。
waitpid 関数は 3 つのパラメーターを取ります
- プロセスID(pid)は、待機する子プロセスのプロセス ID です。pid が -1 の場合は、任意の子プロセスを待機します。pid が 0 の場合は、呼び出しプロセスと同じプロセスグループに属するすべての子プロセスを待機します。pid が 0 より大きい場合は、指定されたプロセス ID の子プロセスを待機します。
- ワーキング状態:終了ステータスを子プロセスに保存するために使用される整数ポインタ。NULLが渡されると、子プロセスの終了ステータスは無視されます。
- 子プロセスが終わっていなければノンブロッキングで速やかに帰ってくる
- 子プロセスが終了していない状態でも、一時停止状態なら返す
- 引き続き続行される子がすでに一時停止されていた場合は、それらも返されます。
waitpid 関数は終了した子プロセスのプロセス ID を返します。子プロセスが終了していない場合、-1 を返し errno に ECHILD を設定します。
waitpid関数は、子プロセスが終了するのを待って終了ステータスを取得し、子プロセスがゾンビプロセスになるのを防ぐことができます。