Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ wait3(2) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

exit(2)

WAIT(2)  —  UNIX Programmer’s Manual

名称

wait, wait3 − プロセスが終了するのを待つ

形式

#include <sys/wait.h>

pid = wait(status)
int pid;
union wait ∗status;

pid = wait(0)
int pid;

#include <sys/time.h>
#include <sys/resource.h>

pid = wait3(status, options, rusage)
int pid;
union wait ∗status;
int options;
struct rusage ∗rusage;

解説

wait は、 あるシグナルが受け取られるまで、 またはその子プロセスの 1つが終了するまで、 呼び出し元プロセスを 遅延させます。 前回の wait 以来そのいずれかの子プロセスが死んでいる場合には、 即座にリターンし、 その終了している子プロセスのうちの 1つの子プロセスのプロセスIDと 終了ステータスを返します。 子プロセスがない場合には、 即座にリターンして、 値 −1 を返します。

wait コールが成功した場合のリターンでは、 status はゼロ以外になり、 status の上位バイトには、 子プロセスによって与えられた exit への引数の下位バイトが収められます。 status の下位バイトには、 そのプロセスの終了ステータスが収められます。 status ワードは、 <sys/wait.h> で詳細に定義されています。

wait3 は、 子プロセスのステータスを 収集するときにブロックしてはならないプログラムのための代替インタフェースです。 status パラメータは、 前述のように定義されています。 options パラメータは、 ステータスを 報告することを 望むプロセスがない場合にコールがブロックすべきではないこと(WNOHANG)、 および/または SIGTTIN、 SIGTTOU、 SIGTSTP、 または SIGSTOP シグナルのせいで停止された現プロセスの子プロセスにも、 それらのステータスが報告されるべきであること(WUNTRACED)を 指定するために使用されます。 rusage がゼロ以外である場合には、 その終了させられたプロセスおよびそのすべての子プロセスによって使用された リソースの要約が返されます(現在のところ、 この情報は、停止されたプロセスだけに関するものです)。

WNOHANG オプションが指定され、 ステータスを 報告することを 望むプロセスがない場合には、 wait3 は pid 0 を 返します。 WNOHANG オプションと WUNTRACED オプションとは、 2つの値の 論理和 を とることによって組み合わせることができます。

注意事項

終了ステータス(シグナル)の一覧は、 sigvec(2) を 参照してください。 0 のステータスは、 正常終了を 示します。 終了する前に停止された再開可能なプロセスの場合は、 特別なステータス(0177)が返されます (ptrace(2) 参照)。 終了ステータスの 0200 ビットがセットされている場合には、 そのプロセスのコアイメージがシステムによって作成されたことを 表します。

親プロセスが子プロセスの終了を 待たずに終了した場合には、 初期設定プロセス(プロセスID = 1)がそれらの子プロセスを 受け継ぎます。

wait と wait3 は、 あるプロセスが子プロセスの終了を 待っている間にシグナルを 受け取ったときに、 自動的に再開されます。

リターン値

子プロセスが停止されたか終了させられたために wait が リターンした場合には、 その子プロセスのプロセスIDが呼び出し元プロセスへ返されます。 そうでない場合には、 値 −1 が返され、 errno がエラーを 示すようにセットされます。

wait3 は、 以前に待たれなかった子プロセスがない場合には、 −1 を 返します。 WNOHANG が指定されていて、 停止された、 または終了させられた子プロセスがない場合には、 0 が返されます。

エラー

次のエラーのうち、1つ以上が真である場合には、 wait は失敗し、 即座にリターンします。

[ECHILD] 呼び出し元プロセスが、 存在している待たれていない子プロセスを 持っていない。

[EFAULT] status または rusage 引数が、 認められないアドレスを 指し示している。

関連事項

exit(2)

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026