sudo啟動程序引發(fā)的進(jìn)程個(gè)數(shù)不對

這幾天把自己負(fù)責(zé)的服務(wù)改成了多進(jìn)程模型,然后使用sudo來啟動進(jìn)程,示例程序如下:


int main(void)

{

fork();

while(1);

}

編譯:

`gcc test.c

`

使用sudo執(zhí)行a.out sudo ./a.out

接下來用ps -aux | grep a.out 查找進(jìn)程得出如下結(jié)果:


root    18001  0.3  0.1 179860  3356 pts/23  S+  15:33  0:00 sudo ./a.out

root    18003 93.0  0.0  3920  368 pts/23  R+  15:34  0:11 ./a.out

root    18004 93.0  0.0  3920    92 pts/23  R+  15:34  0:11 ./a.out

很明顯,我們的程序應(yīng)該只fork了一個(gè)進(jìn)程,加上自己本身,共兩個(gè)進(jìn)程,本來一直以為是自己那個(gè)小伙伴的代碼中fork了一個(gè)進(jìn)程。直到今天總覺得不對勁,平白無故多了一個(gè)進(jìn)程,這是哪里來的,當(dāng)我寫了上面這個(gè)簡單模型后,再使勁想了想,用sudo cat再試驗(yàn)了一下,終于回過味來了。原來上面的sudo ./a.out只是一個(gè)shell,這和sudo程序的實(shí)現(xiàn)有關(guān)。

當(dāng)使用sudo ./a.out 執(zhí)行代碼時(shí),會首先啟動一個(gè)root用戶的shell,但是這個(gè)shell的名字就叫做"sudo ./a.out",直接引起歧義。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容