Wait (system call) とは

コンピュータ・オペレーティング・システムでは、プロセス(またはタスク)は、実行を完了するために別のプロセスを待機することがあります。ほとんどのシステムでは、親プロセスが独立して実行する子プロセスを作成できます。親プロセスは、子プロセスの実行中に親プロセスの実行を中断するwaitシステムコールを発行することがあります。子プロセスが終了すると、オペレーティングシステムに終了ステータスが返され、待機状態の親プロセスに返されます。親プロセスは実行を再開します。
現代のオペレーティングシステムはまた、プロセススレッドが他のスレッドを作成し、同様の方法でそれらが終了する(「参加」する)のを待つシステムコールを提供します。
オペレーティングシステムは、子プロセスが終了するのをプロセスが待つか、(プロセスIDで特定される)単一の特定の子プロセスが終了するのを待つために、待機呼び出しのバリエーションを提供することがあります。
いくつかのオペレーティングシステムは、子プロセスが終了したときに親プロセスにシグナル(SIGCHLD)を発行し、親プロセスに通知し、子プロセスの終了ステータスを取得できるようにします。
子プロセスが返す終了ステータスは、通常、プロセスが正常終了したか異常終了したかを示します。正常終了の場合、このステータスには、プロセスがシステムに戻す終了コード(通常は整数値)も含まれます。 UNIXの最初の20年間では、終了コードの下位8ビットのみが待機中の親に利用可能でした。 1989年にSVR4を使用して、構造体メンバーsi_statusのsiginfo_tという構造体の出口コールからのすべてのビットを返す新しい呼び出しwaitidが導入されました。 Waitidは、2001年からPOSIX標準の必須部分です。