Убить все процессы из C в Linux - PullRequest
0 голосов
/ 25 августа 2018

Я пишу программу для Linux C, которая будет выполняться как init.В конечном итоге потребуется отключить систему.У меня есть код для размонтирования всех файловых систем и фактического выключения системы;теперь мне просто нужен способ отправить SIGTERM всем процессам, sleep(5), а затем отправить SIGKILL всем оставшимся процессам.

1 Ответ

0 голосов
/ 25 августа 2018

Если pid равен -1: если пользователь имеет привилегии суперпользователя, сигнал отправляется всем процессам, кроме системных процессов и процесса, отправляющего сигнал.Если пользователь не является суперпользователем, сигнал отправляется всем процессам с тем же идентификатором пользователя, что и пользователь, за исключением процесса, отправляющего сигнал.Ошибка не возвращается, если какой-либо процесс может быть сигнализирован.

Использование -1 для pid отправит сигнал каждому процессу, для которого у вызывающего процесса есть разрешение, кроме процесса 1, например,

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

Используйте с осторожностью.

...