測試是否可以 waitpid 子程序的子程序

2021-06-09 00:54:24 字數 636 閱讀 5759

雖然 " 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的訊號定義...