2016-05-23 65 views
-2

通過查看信號的語法,我可以看到它沒有給予將信號傳遞給另一個pid(pid_t)的靈活性。一個進程只能忽略,默認或自定義操作。我們可以將信號傳遞給另一個進程的可能方式是什麼? (我不是在談論pthreads)。如何將信號傳遞給另一個進程?

+2

'男人殺死'回答你的問題嗎? – SergeyA

+0

也添加我排除使用shell命令傳遞信號或使用exec進行查殺過程或發送信號的選項 – theartist33

+0

@SergeyA我只是提到,在我上面的評論中,沒有尋找kill命令 – theartist33

回答

4

您希望kill(2) system call(不是kill外殼命令):

#include <sys/types.h> 
#include <signal.h> 

int kill(pid_t pid, int sig); 

kill()系統調用可用於任何信號發送到任何過程 組或進程。

如果pid爲正數,則信號sig將被髮送到由pid指定的ID 的進程。

如果pid等於0,則將sig發送到調用進程的進程組 中的每個進程。

如果pid等於-1,則除了進程1 (init)外,sig會發送到調用進程有權發送信號的每個進程,但請參見下文。

如果pid小於-1,則將sig發送給進程組中的每個進程,其ID爲-pid。

如果sig爲0,則不發送信號,但錯誤檢查仍然執行 ;這可用於檢查是否存在進程ID 或進程組ID。

運行man kill會給你kill(1),這是shell命令。要獲取系統調用的手冊頁,請運行man 2 kill

相關問題