核心程序
程序id 名字 說明
0 swap 用於交換 系統程序
1 init 用於啟動系統 非系統程序 程式檔案sbin/init 讀配置檔案/etc/init.d
2 pagedaemon 頁守護程序 系統程序
程序相關函式的重要說明
1) fork之後,父子程序沒有規定誰先執行,依賴於系統排程
父子程序相同的檔案描述符共享乙個檔案表項
父程序的檔案鎖不會被子程序繼承
vfork只會部分賦值父程序的位址空間,然後父程序會等待子程序至少exec其他程式後才開始執行,
*********子程序在呼叫exec或exit之前在父程序的位址空間執行*****************
2)如果子程序的父程序已經結束,那麼它們的父程序都會變成init程序,被init領養
**實現原理是,在父程序終止的時候去遍歷程序表,然後找到它的所有子程序並修改
init在子程序結束的時候會呼叫wait取得子程序的狀態,所以子程序結束後不會變成僵死程序.
3) 僵死程序:
子程序結束後,會保留程序id,結束狀態等值,並不會馬上退出,需要等待父程序使用
wait來取得值後再結束,如果父程序一直不來取,那麼子程序就以僵死程序的狀態一直存在.
ps命令將僵死狀態的程序標識為z
4) 子程序只要結束就向父程序傳送sigchld訊號,如果父程序不捕獲預設是忽略
5) wait 和waitpid
wait呼叫: 如果有子程序存在,且都在執行,那麼父程序阻塞
1)當有乙個子程序退出的時候,那麼wait呼叫馬上返回
2)收到sigchld訊號,那麼wait呼叫馬上返回
waitpid呼叫:
1)可以根據引數設定是否阻塞父程序
2)可以指定某個子程序進行阻塞
3)可以控制子程序
6) waitid,wait3,wait4
waitid類似於waitpid
wait3和wait4分別是指有3個引數和4個引數的wait,多的引數表示需要核心返回子程序的資源報告
linux 程序控制
什麼是程序 每乙個程序在系統中都有唯一的id標示它,此id為程序標示符 程序標示符的型別 pit t,其實是乙個無符號整形 乙個程序標示符對應唯一的乙個程序,多個程序標示符可以對應同乙個程式 程序和程式的區別 程式 可執行的二進位制 檔案,這種檔案載入到記憶體中執行就得到了乙個程序 程序 同乙個程式...
Linux程序控制
linux程序控制 獲取pid include include pid t getpdi void 獲取本程序id pdi t getppid vodi 獲取父程序id,及獲取建立子程序的程序id 程序建立 include pid t fork void 建立子程序 呼叫一次返回兩次值 1.父程序中...
linux程序控制
linux程序控制 編寫命令直譯器 一 背景 之前在 計算機作業系統 這本書中已經多次接觸了程序這一概念,而程序在作業系統中具體是做什麼的呢?卻沒有實際的與程序發生過互動,因此也就沒有實際的感受。對於我來說程序僅僅停留在概念的層面上 程序是程式執行時的記憶體空間和設定或者說程序就是程式的進行時。沒有...