2) waitpid()的作用和wait()一樣,但它並不一定要等待第乙個終止的子程序(它可以指定需要等待終止的子程序),它還有若干選項,如可提供乙個非阻塞版本的 wait()功能,也能支援作業控制。實際上,wait()函式只是 waitpid()函式的乙個特例,在linux 內部實現 wait()函式時直接呼叫的就是waitpid()函式。
系統呼叫exit後,該程序並非馬上消失,而是留下乙個叫殭屍程序的資料結構,殭屍程序是非常特使的一種,它放棄了幾乎所有的記憶體空間,沒有任何可執行**,也不能別排程,僅僅在程序列表保留位置,而且不占用任何記憶體空間
我們把wait函式引數設定為null的時候,就可以把這個殭屍程序銷毀,我們很明顯看到,在第2行結果列印出來前有幾秒的等待時間,這是設定的休眠時間,之有子程序從睡眠中甦醒過來,它才能正常退出,頁就才能被父程序普捉到,這裡不管設定子程序, 睡眠時間有多久,父程序都會一直等待下去。
wait函式和waitpid函式
1.殭屍程序 說明子程序結束但是沒有完全釋放記憶體 在核心中的task struct沒有釋放 該程序就會成為殭屍程序 當殭屍程序的父程序結束後就會被init程序 1號程序 接管,最終被 殭屍程序的危害 如果你不處理殭屍程序的話,那麼保留的那段資訊就不會釋放,其程序號就會一定被占用,但是系統所能使用的...
wait函式和waitpid函式
1 wait函式 當乙個程序結束時,會關閉所有的檔案描述符,釋放所有的記憶體空間,但依然儲存其pcb,核心在pcb中儲存著一些資訊。如果是正常退出,則會儲存退出狀態。如果是異常終止,則儲存是哪個訊號終止了該程序。父程序通過呼叫wait 或者waitpid 函式,來獲取這些資訊,之後徹底清除改程序。只...
wait和 wait pid函式用法
wait和 wait pid函式用法 wait的函式原型是 i nclude 提供型別pid t的定義 i nclude pid t wait int status 程序一旦呼叫了wait,就立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出,如果讓它找到了這樣乙個已經變成殭屍的子程序...