程序控制之waitid函式

2022-05-04 20:15:24 字數 1144 閱讀 2505

single unix specification的xsi擴充套件包括了另乙個取程序終止狀態的函式——waitid,此函式類似於waitpid,但提供了更多的靈活性。

#include int waitid( idtype_t idtype, id_t id, siginfo_t *infop, int

options );

返回值:若成功則返回0,若出錯則返回-1

與waitpid相似,waitid允許乙個程序指定要等待的子程序。但它使用單獨的引數表示要等待的子程序的型別,而不是將此與程序id或程序組id組合成乙個引數。id引數的作用與idtype的值相關。該函式支援的idtype型別列出在表8-3中。

表8-3 waitid的idtype常量

常量

說明

p_pid

等待乙個特定的程序:id包含要等待子程序的程序id

p_pgid

等待乙個特定程序組中的任一子程序:id包含要等待子程序的程序組id

p_all

等待任一子程序:忽略id

options引數是表8-4中各標誌的按位「或」。這寫標誌指示呼叫者關注哪些狀態變化。

表8-4 waitid的options常量

常量

說明

wcontinued

等待乙個程序,它以前曾被暫停,此後又已繼續,但其狀態尚未報告

wexited

等待已退出的程序

wnohang

如無可用的子程序退出狀態,立即返回而非阻塞

wnowait

不破壞子程序退出狀態。該子程序退出狀態可由後續的wait、waitid或waitpid呼叫取得

wstopped

等待乙個程序,它已經暫停,但其狀態尚未報告

infop引數是指向siginfo結構的指標。該結構包含了有關引起子程序狀態改變的生成訊號的詳細資訊。

本篇博文內容摘自《unix環境高階程式設計》(第二版),僅作個人學習記錄所用。關於本書可參考:

程序控制之exec函式

1.exec函式 include int execl const char pathname,const char arg0,char 0 int execv const char pathname,const char argv int execle const char pathname,con...

程序控制之system函式

1.system函式 include int system const char cmd 如果cmd是乙個空指標,則僅僅當命令處理程式可用時,system返回非0值。因為system在其實現中呼叫了fork,exec和waitpid,因此有三種返回值 1 如果fork失敗或者waitpid返回除ei...

程序控制之exit函式

程序有下面5種正常終止方式 1 在main函式內執行return語句。這等效於呼叫exit。2 呼叫exit函式。此函式有iso c定義,其操作包括呼叫各終止處理程式 終止處理程式在呼叫atexit函式時登記 然後關閉所有標準i o流等。3 呼叫 exit或 exit函式。iso c定義 exit,...