kill()

Отправить сигнал процессу или группе процессов

Прототип:

#include <sys/types.h>
#include <signal.h>
int kill( pid_t pid,
int sig );

Аргументы:

pid
ID процесса или группы процессов, которым будет отправлен сигнал:
pid > 0
Сигнал отправляется процессу с заданным ID процесса
pid = 0
Сигнал отправляется каждому процессу, который входит в группу текущего процесса
pid < 0
Сигнал отправляется каждому процессу, который входит в группу процесса -pid
sig
0, или сигнал, который будет отправлен. Полный список сигналов представлен в POSIX signals.

Библиотека:

libc

Описание:

Функция kill() отправляет сигнал sig процессу или группе процессов, c заданным pid. Если sig равен 0, сигнал не отправляется, но pid всё ещё проверяется на допустимость.

Для того чтобы процесс имел права на отправку сигнала указанному процессу, реальный или эффективный ID пользователя процесса отправителя должен:

Если значение pid вызывает генерацию sig для отправляющего процесса, и если sig не заблокирован, то или sig, или по крайней мере один не заблокированный ожидающий сигнал доставляется перед возвращением функции kill().

Этот вызов не блокируется. Однако, в сетевом случае, могут запуститься низкоприоритетные потоки.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EAGAIN
Недостаточно системных ресурсов для передачи сигнала.
EINVAL
Сигнал sig недопустим.
EPERM
Процесс не имеет прав на отправку сигналов ни одному из указанных процессов.
ESRCH
Заданный pid не существует.

Примеры:

См. sigprocmask()

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

getpid(), killpg(), setsid(), sigaction(), signal(), SignalKill(), sigqueue()




Предыдущий раздел: Описание API системной библиотеки