Linux應(yīng)用編程之進(jìn)程的PID與PPID
ID:嵌入式情報(bào)局
作者:情報(bào)小哥
1進(jìn)程PID
首先介紹PID的相關(guān)知識(shí),為后面介紹fork函數(shù)進(jìn)行鋪墊。
01
PID與PPID
PID不是控制理論的PID算法,而是Prcess ID的簡(jiǎn)寫(xiě)。進(jìn)程PID是當(dāng)操作系統(tǒng)運(yùn)行進(jìn)程時(shí)系統(tǒng)自動(dòng)為其分配的唯一標(biāo)識(shí)符,用于唯一標(biāo)識(shí)此進(jìn)程的一個(gè)整數(shù),而PPID就是進(jìn)程的父進(jìn)程的PID。
既然是唯一標(biāo)識(shí),PID也就相當(dāng)于我們的身份證,一旦被發(fā)放即終生標(biāo)識(shí),這也便于操作系統(tǒng)更好的管理和標(biāo)識(shí)進(jìn)程,當(dāng)然一旦進(jìn)程生命周期結(jié)束,此時(shí)的PID便會(huì)被釋放,可供以后的進(jìn)程再次使用。
02
特殊PID進(jìn)程
我們可以通過(guò)命令行輸入 : ps -aux 來(lái)查看當(dāng)前系統(tǒng)所運(yùn)行的進(jìn)程。
-
PID= 0的進(jìn)程 :
-
通常也叫調(diào)度進(jìn)程、idle進(jìn)程,負(fù)責(zé)進(jìn)程之間的調(diào)度和切換。該進(jìn)程是內(nèi)核的一部分,所有進(jìn)程的根進(jìn)程,一般我們是看不到該進(jìn)程的。
-
PID = 1的進(jìn)程 :
-
通常是init進(jìn)程,Linux幾乎所有的進(jìn)程都是由父進(jìn)程產(chǎn)生的,PID=1的進(jìn)程為父原始進(jìn)程,比如該進(jìn)程會(huì)讀取文件系統(tǒng)來(lái)完成操作系統(tǒng)的啟動(dòng)。
-
PID = 2的進(jìn)程 :
-
也叫kthreadd進(jìn)程,它的任務(wù)就是管理和調(diào)度其他內(nèi)核線程。
2兩個(gè)常用API函數(shù)
01
兩個(gè)常用API
同樣我們使用命令行 : man 2 getpid ,從而可以找到該API的詳解。
-
其中g(shù)etpid表示獲得當(dāng)前進(jìn)程PID,而getppid是獲得當(dāng)前進(jìn)程的父進(jìn)程PID,并且兩個(gè)函數(shù)均能成功返回。
02
實(shí)驗(yàn)說(shuō)明
-
實(shí)驗(yàn)代碼 :
-
實(shí)驗(yàn)結(jié)果:
同樣我們可以通過(guò)使用命令行ps -aux看到子進(jìn)程PID = 45347 = ./Test和父進(jìn)程PID = 45286 = bash。
3最后
這里小哥就介紹了PID、PPID以及如何獲得進(jìn)程PID的API函數(shù),今天就分享到這里,下期跟大家一起學(xué)學(xué) folk!
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!