編寫程式:建立乙個子程序,父程序列印10句:parent process!子程序列印10句:child process! 要求用程序控制的方法,按順序先輸出子程序的10句話,再輸出父程序的10句話。
#include #include #include #include void main()
}
執行結果:
說明:wait
( )等待子程序執行結束。如果子程序沒有完成,父程序一直等待。
wait( )
將呼叫程序掛起,直至其子程序因暫停或終止而發來軟中斷訊號為止。如果在
wait( )
前已有子程序暫停或終止,則呼叫程序做適當處理後便返回。
系統呼叫格式:
int
wait(status)
int
*status;
其中,status
是使用者空間的位址。它的低8位反應子程序狀態,為0表示子程序正常結束,非0則表示出現了各種各樣的問題;高8位則帶回了
exit( )
的返回值。
exit( )
返回值由系統給出。
核心對wait( )
作以下處理:
(1)首先查詢呼叫程序是否有子程序,若無,則返回出錯碼;
(2)若找到一處於「僵死狀態」的子程序,則將子程序的執行時間加到父程序的執行時間上,並釋放子程序的程序表項;
(3)若未找到處於「僵死狀態」的子程序,則呼叫程序便在可被中斷的優先順序上睡眠,等待其子程序發來軟中斷訊號時被喚醒。
exit( )
終止程序的執行。
系統呼叫格式:
void exit(status)
int status;
其中,status
是返回給父程序的乙個整數,以備查考。
為了及時**程序所占用的資源並減少父程序的干預,
unix/linux
利用exit( )
來實現程序的自我終止,通常父程序在建立子程序時,應在程序的末尾安排一條
exit( )
,使子程序自我終止。exit(0)表示程序正常終止,exit(1)表示程序執行有錯,異常終止。
如果呼叫程序在執行
exit( )
時,其父程序正在等待它的終止,則父程序可立即得到其返回的整數。核心須為
exit( )
完成以下操作:
(1)關閉軟中斷
(2)**資源
(3)寫記帳資訊
(4)置程序為「僵死狀態」
Linux 程序的控制
1 fork函式 在linux中fork函式時非常重要的函式,它從已存在程序中建立乙個新程序。新程序為子程序,而原程序為父程序。程序呼叫fork,當控制轉移到核心中的fork 後,核心做 我們來看一段程式具體了解一下fork 程式執行結果 2 寫時拷貝 fork常規用法 fork呼叫失敗的原因1 程...
Linux的程序控制
1 有沒有命令能讓程序suspend and resume 參考 http zhidao.baidu.com question 57671342 kill stop 1234 將該程序暫停。如果要讓它恢復到後台,用kill cont 1234 很多在前台執行的程式這樣是不行的 如果要恢復到前台,請在...
linux 程序控制
什麼是程序 每乙個程序在系統中都有唯一的id標示它,此id為程序標示符 程序標示符的型別 pit t,其實是乙個無符號整形 乙個程序標示符對應唯一的乙個程序,多個程序標示符可以對應同乙個程式 程序和程式的區別 程式 可執行的二進位制 檔案,這種檔案載入到記憶體中執行就得到了乙個程序 程序 同乙個程式...