C語言中的waitpid()函數用于在父進程中等待子進程的結束,并獲取子進程的狀態信息。
其函數原型為:
#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid(pid_t pid, int *status, int options);
參數說明:
pid:指定要等待的子進程的進程ID。如果pid > 0,則表示等待指定ID的子進程;如果pid = -1,則表示等待任意一個子進程;如果pid = 0,則表示等待與調用進程在同一個進程組的任意子進程;如果pid < -1,則表示等待進程組ID等于pid絕對值的任意子進程。
status:用于保存子進程的退出狀態信息。如果不關心子進程的狀態信息,可以將其設置為NULL。
options:用于設置等待的行為選項。常用的選項有WNOHANG(非阻塞,即立即返回)、WUNTRACED(對于已停止的子進程也返回狀態)、WCONTINUED(對于已繼續的子進程也返回狀態)等。
waitpid()函數的返回值為子進程的進程ID,若調用失敗則返回-1。
通過waitpid()函數,父進程可以等待子進程的結束,以便獲取子進程的退出狀態信息,進而進行相應的處理,例如回收子進程資源、判斷子進程是否正常退出等。