雖然 " man waitpid" 裡寫明作用的物件是子程序, 我還是測試下是否可以 waitpid 子程序的子程序.
以下為測試**, 其中用一塊 sizeof(int) 大小的共享記憶體傳遞子程序的子程序 pid.
#include #include #include #include #include #include #include int main(int argc, char *argv)
shm_ptr = shmat(shmid, null, 0);
if(shm_ptr == (void *)-1)
p_pid = (pid_t *)shm_ptr;
*p_pid = 0;
s_pid = fork();
if(s_pid == 0)
else if(ss_pid > 0)
else
} else if(s_pid < 0)
else
else if(ret < 0)
else
} }
return 0;
}
結果輸出: "no child process".
結論: 不可以waitpid 子程序的子程序.
等待子程序結束wait 和waitpid
父子程序有時需要簡單的程序間同步,如父程序等待子程序的結束。linux提供了以下兩個等待函式 wait waitpid 需要包含標頭檔案 include include 1 pid t wait int status 功能 等待任一子程序終止,如果子程序終止了,此函式會 子程序的資源。呼叫wait函...
函式 waitpid 等待子程序中斷或結束
2011 08 29 15 40 378人閱讀收藏 舉報 null waitpid 等待子程序中斷或結束 相關函式 wait,fork 表頭檔案 include include 定義函式 pid t waitpid pid t pid,int status,int options 函式說明 wait...
判斷子程序是否存在
if kill pidt,0 0 child process has dead.else child alive 前提條件是,父程序已經處理了sigchld.否則,此檢測方法將失效 unix 環境高階程式設計 的解釋為 kill pid t pid,int signo posix將編號為0的訊號定義...