sudo啟動程序引發的進程個數不對

這幾天把自己負責的服務改成了多進程模型,然后使用sudo來啟動進程,示例程序如下:


int main(void)

{

fork();

while(1);

}

編譯:

`gcc test.c

`

使用sudo執行a.out sudo ./a.out

接下來用ps -aux | grep a.out 查找進程得出如下結果:


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

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

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

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

推薦閱讀更多精彩內容