Linux 簡單程序程式設計記錄

2021-10-08 01:32:13 字數 1960 閱讀 8017

簡單描述程序程式設計的幾個小知識點

殭屍程序

若子程序退出且未告知父程序,稱該子程序為

殭屍程序

孤兒程序

若父程序退出且子程序尚未退出,該子程序託孤給init程序即1號程序,稱該子程序為

孤兒程序

守護程序

通過結束其父程序,並對其進行一定的處理使其脫離於終端並且在後台執行的子程序,稱該子程序為

守護程序

建立守護程序的關鍵**(示例)

forkvsvfork

函式資源

執行順序

fork

建立的子程序拷貝父程序的資料段,**段

各自**段位置往下執行,執行順序不定

vfork

建立的子程序與父程序共享資料段

在子程序沒有呼叫exec和exit之前,父程序阻塞

備註

很多情況下,fork之後會接著使用exec,導致很多複製的資源被替換,代價較高,因此有了vfork

如今fork有了寫時複製的機制(cow),所以複製的代價較底(複製父程序頁表的代價),而且vfork伴隨著一些安全問題,因此盡量使用fork

exitvs_exit

函式退出時的步驟

exit

1、呼叫 atexit() 註冊的函式;2、關閉開啟的流(寫所有緩衝輸出),刪除 tmpfile 函式建立的臨時檔案;3、呼叫 _exit() 函式終止程序

_exit

1、屬於該過程的檔案描述符都將被關閉;2、程序的任何子程序都由程序1繼承;3、程序的父節點傳送sigchld訊號

waitvswaitpid

函式簡易說明

引數區別

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...