![](/img/trans.png)
[英]Kill sh -c and all its sub processes in c with linux system calls
[英]How to kill a spawned “/bin/sh -c” and all its subprocesses using linux syscalls
當我使用&運算符在shell中啟動后台進程時,如果關閉終端窗口,則所有這些子進程都將結束。
如何復制此行為以關閉任意進程及其子進程?
例如,如果我使用execve syscall來執行以下命令行:
/bin/sh -c "watch ls & watch ls -lah"
並且我具有/ bin / sh進程的PID,我嘗試發送SIGHUP信號,該信號應傳輸到/ bin / sh的子進程,但其他進程仍在運行。
為什么兩個“監視”進程沒有被殺死? 並且有一種方法可以殺死/ bin / sh並殺死它們嗎?
您可以使用kill系統調用。
#include <sys/types.h>
#include <signal.h>
int kill (pid_t pid, int sig);
您應該發送SIGKILL信號。 關於殺死子進程,請查看為什么父進程在Linux中被殺死后子進程仍然存活?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.