簡單描述程序程式設計的幾個小知識點
殭屍程序
若子程序退出且未告知父程序,稱該子程序為
殭屍程序
孤兒程序
若父程序退出且子程序尚未退出,該子程序託孤給init程序即1號程序,稱該子程序為
孤兒程序
守護程序
通過結束其父程序,並對其進行一定的處理使其脫離於終端並且在後台執行的子程序,稱該子程序為
守護程序
建立守護程序的關鍵**(示例)
fork
vsvfork
函式資源
執行順序
fork
建立的子程序拷貝父程序的資料段,**段
各自**段位置往下執行,執行順序不定
vfork
建立的子程序與父程序共享資料段
在子程序沒有呼叫exec和exit之前,父程序阻塞
備註:很多情況下,
fork
之後會接著使用exec
,導致很多複製的資源被替換,代價較高,因此有了vfork
如今
fork
有了寫時複製的機制(cow),所以複製的代價較底(複製父程序頁表的代價),而且vfork
伴隨著一些安全問題,因此盡量使用fork
exit
vs_exit
函式退出時的步驟
exit
1、呼叫 atexit() 註冊的函式;2、關閉開啟的流(寫所有緩衝輸出),刪除 tmpfile 函式建立的臨時檔案;3、呼叫 _exit() 函式終止程序
_exit
1、屬於該過程的檔案描述符都將被關閉;2、程序的任何子程序都由程序1繼承;3、程序的父節點傳送sigchld訊號
wait
vswaitpid
函式簡易說明
引數區別
wait
父程序阻塞等待子程序結束返回資訊
引數:status得到子程序的退出狀態,可為null,即忽略該退出狀態
一定程度上屬於waitpid的特例
waitpid
父程序阻塞等待子程序結束返回資訊
引數:pid可指定程序號;status與上述相同;option允許改變waitpid的行為
不一定阻塞呼叫者,option使其功能更多樣化
備註 1:
waitpid
的引數詳解:option(可組合):
備註 2:
獲取staus後檢測處理
wifsignaled(status)子程序因為捕獲訊號而終止,返回非零值
wifstopped(status)如果程序被暫停,返回乙個非零值
system
函式
main函式結束
呼叫exit
函式
呼叫_exit
函式
呼叫abort
函式
接收程序終止訊號
Linux程序程式設計
一 與程序相關的系統函式 1.getpid include 提供pid t型別的定義 include 提供函式的定義 pid t getpid void 返回值為當前程序的程序id 2.getppid include 提供pid t型別的定義 include 提供函式的定義 pid getppid ...
Linux 程序程式設計
程序程式設計 1 getpid 函式的作用 獲取程序的識別碼 程序號 函式的原型 pid t getpid void 返回值 目前程序的程序號 標頭檔案 include 2 fork 函式的作用 建立乙個程序 函式的原型 pid t fork void 函式的返回值 0 出錯 0 表示當前建立的是子...
Linux 程序程式設計
特點 wait waitpid 殭屍程序 特點 pid t waitpid pid t pid,int status,options 使用pipe 使用方便 兩個程序中,其中乙個程序讀取管道 使用pipe函式構建父子關係,呼叫ls l grep a.out demo c int main int i...