我試着運行以下命令kill -9 1
並且它說bash: kill: (1) - Operation not permitted
。SIGKILL init(PID = 1)沒有sudo?在Linux中的錯誤?
對我來說,很明顯你不應該能夠在沒有sudo的情況下發出init進程的信號。
但是,編寫c-shell的代碼時,我遇到了一個錯誤(我認爲它確實是)。我編譯了下面的程序並運行它。現在它讓我和我所有的操作系統概念感到困惑。
#include <signal.h>
int main()
{
killpg(1,9);
return (0);
}
請保存所有的程序並運行自己的代碼。
任何人都可以給我一個理由,並澄清我的困惑。
UPDATE
的killpg()
讀作手冊頁...
在Linux上,killpg()實現爲庫函數,使 調用殺(-pgrp,SIG)。的
kill()
讀作
男子頁...
A的-1 PID是特殊的;它表示除kill 進程本身和init之外的所有進程。
現在的問題是,這樣的電話的用法是什麼,從字面上殺死所有的東西。它有許多危險的應用程序而不是有用的應用程序。但是,自從多年以來它一直被保存在Linux內核中以後,它一定有它自己的用處。但我無法弄清楚。有沒有人知道這件事?
'如果pgrp爲0,killpg()將該信號發送到調用進程的進程組 。 (POSIX說:如果pgrp小於或等於1,則 的行爲是不確定的。' – Leandros
我錯過了該手冊頁上的該行,這提醒我在結束任何事情之前,應該閱讀兩次手冊頁:) –
不作爲根檢查,不是嗎? – alk