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