在Linux中杀死所有C进程

时间:2018-08-25 00:28:16

标签: c linux process signals

我正在编写将作为init执行的Linux C程序。最终将需要关闭系统。我有用于卸载所有文件系统并实际上关闭系统的代码;现在,我只需要一种方法即可将git发送到所有进程/full/path/to/bin/git,然后将SIGTERM发送到所有其余进程。

1 个答案:

答案 0 :(得分:7)

  

如果pid为-1:                如果用户具有超级用户特权,则将信号发送到除系统进程和发送信号的进程以外的所有进程。如果用户不是超级用户                用户,则将信号发送到与用户具有相同uid的所有进程,但发送信号的进程除外。如果可以发出任何信号,则不会返回错误。

使用-1作为pid会将信号发送到调用进程允许的每个进程,但不包括进程1,例如

#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
...
kill(-1, SIGTERM);
sleep(5);
kill(-1, SIGKILL);

请谨慎使用。