
170
|
第五章
BSD 要使用:wait3() 與 wait4()
waitpid()
源自 AT&T 的 System V Release 4,而 BSD 則走自己的路,它提供了兩個函
式可用於等待一個子行程改變狀態:
#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);
3
及
4
其實是指,這兩個函式分別是
wait()
具有三個參數的版本以及具有四個參數的版
本。Berkeley 的創意在此處顯而易見。
如果不使用
rusage
引數,此函式的行為類似於
waitpid()
。下面的
wait3()
調用:
pid = wait3 (status, options, NULL);
與下面的
waitpid()
叫用等效:
pid = waitpid (-1, status, options);
而下面的
wait4()
調用:
pid = wait4 (pid, status, options, NULL);
與下面的
waitpid()
叫用等效:
pid = waitpid (pid, status, options);
也就是,
wait3() ...