#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/wait.h>
pid_t wait3(int *status, int options,
struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options,
struct rusage *rusage);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
wait3():
_BSD_SOURCE
wait4():
_BSD_SOURCE || _XOPEN_SOURCE >= 500
rusage を使用する点を除けば、以下の 2つは等価である。
wait3(status, options, rusage);
waitpid(-1, status, options);
同様に、以下の 2つも等価である。
wait4(pid, status, options, rusage);
waitpid(pid, status, options);
言い換えると、
wait3()
は全ての子プロセスを対象に待つが、
wait4()
では特定の子プロセス (複数可) を選んで待つことができる。
rusage が NULL でない場合、 rusage が指す rusage 構造体 には子プロセスのアカウント情報が格納される。 詳しくは getrusage(2) を参照のこと。
Linux では、 wait3() はライブラリ関数であり、 wait4() システムコールを使って実装されている。