在Linux中杀死C中的所有进程

Bil*_*lly 3 c linux signals process

我正在编写一个将作为init执行的Linux C程序.它最终将需要关闭系统.我有代码来卸载所有文件系统并实际关闭系统; 现在我只需要一种方法将它发送SIGTERM到所有进程sleep(5),然后发送SIGKILL到任何剩余的进程.

小智 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);
Run Code Online (Sandbox Code Playgroud)

谨慎使用.