簡體   English   中英

如何使用linux syscall殺死生成的“ / bin / sh -c”及其所有子進程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM