子程序退出,父程序為什麼要等待?

2021-09-26 02:59:09 字數 916 閱讀 1749

在模擬實現之前,我們首先要理解什麼是阻塞狀態?

作業系統將不滿足某種條件的程序從執行佇列中拿出,將其狀態設定為其他狀態並放入等待佇列中,在此等待佇列中的程序的都處於阻塞狀態。

1、殭屍程序,造成記憶體洩漏

2、父程序得管理子程序,所以父程序派給子程序的任務完成的如何,我們都需要知道,如,子程序執行完成,執行結果對還是不對,或者是否正常退出

3、父程序通過程序等待的方式,**子程序資源,獲取子程序退出資訊

#include #include #include #include #include int main()

else if(pid == 0)

else

else

}return 0;

}

輸出結果:

子程序未退出之前,父程序啥都不幹,一直在等待,5秒後子程序退出,才提取出退出碼。

#include #include #include #include #include int main()

else if(pid == 0)

else

sleep(1);

}while(ret == 0);

if(wifexited(status) && ret == pid)

else

}return 0;

}

輸出結果:

子程序沒有退出,父程序每隔1秒去檢測一次,若沒有檢測到已退出的子程序,就立即退出。

wait 函式父程序等待子程序退出

include include pid t wait int status pid t waitpid pid t pid,int status,int options include include pid t wait int status pid t waitpid pid t pid,int...

父程序等待子程序的非同步版本

前言但是,一味的建立程序,而不對程序進行合理的管理,必然會造成作業系統的冗餘,長時間下來,因為無用程序過多,系統將會崩潰。因為每個程序需要對自己維護乙個pcb的結構體,來描述乙個程序所有可能用到的資源 標誌 所以,這個結構體並不小,且每個程序都自己私有乙個,所以對無用程序的pcb管理是很有必要的。作...

父程序退出,保證子程序交由init。

最近寫 遇到父程序fork出的子程序,父程序退出後子程序也退出。而要求的實現機制是,父程序啟動子程序後,保證子程序能夠繼續執行,可以保證另乙個程序啟動能夠和這個子程序進行通訊操作。2 sigint 程式終止 interrupt 訊號,在使用者鍵入intr字元 通常是ctrl c 時發出 因為父程序收...