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