-2
通過查看信號的語法,我可以看到它沒有給予將信號傳遞給另一個pid(pid_t)的靈活性。一個進程只能忽略,默認或自定義操作。我們可以將信號傳遞給另一個進程的可能方式是什麼? (我不是在談論pthreads)。如何將信號傳遞給另一個進程?
通過查看信號的語法,我可以看到它沒有給予將信號傳遞給另一個pid(pid_t)的靈活性。一個進程只能忽略,默認或自定義操作。我們可以將信號傳遞給另一個進程的可能方式是什麼? (我不是在談論pthreads)。如何將信號傳遞給另一個進程?
您希望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
。
'男人殺死'回答你的問題嗎? – SergeyA
也添加我排除使用shell命令傳遞信號或使用exec進行查殺過程或發送信號的選項 – theartist33
@SergeyA我只是提到,在我上面的評論中,沒有尋找kill命令 – theartist33