KILL(2)

НАЗВАНИЕ
kill - посылка сигнала процессу или группе процессов

СИНТАКСИС


        int kill (pid, sig)

        int pid, sig;

ОПИСАНИЕ
Системный вызов kill посылает сигнал процессу или группе процессов, которые заданы идентификатором pid. Посылаемый сигнал определяется аргументом sig и является либо одним из списка сигналов, заданного в системном вызове signal(2), либо 0. Если аргумент sig равен 0 (пустой сигнал), то будет выполняться проверка корректности обращения к kill, но сигнал в действительности не посылается. Это свойство может быть использовано для проверки того, правильно ли задан аргумент pid.

Передающий и принимающий процессы должны иметь один и тот же реальный или действующий идентификатор пользователя, если только соответствующий посылающему процессу действующий идентификатор пользователя не является идентификатором суперпользователя.

Процессы с идентификаторами 0 и 1 являются специальными [см. intro(2)] и в дальнейшем будут обозначаться как процесс_0 и процесс_1 соответственно.

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

Если pid равен 0, то сигнал будет послан всем процессам, входящим в группу посылающего процесса, за исключением процесса_0 и процесса_1.

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

Если pid равен -1, и сигнал посылается из процесса суперпользователя, то сигнал будет послан всем процессам, за исключением процесса_0 и процесса_1.

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

Системный вызов kill завершается неудачей и сигналы не посылаются, если выполнено хотя бы одно из следующих условий:

[EINVAL]
Аргумент sig задает неверный номер сигнала.
[EINVAL]
Номер сигнала sig равен SIGKILL, а принимающий процесс является всеобщим предком с идентификатором, равным 1 (процесс_1).
[ESRCH]
Не найден процесс с идентификатором, равным значению аргумента pid.
[EPERM]
Реальный и действующий идентификаторы пользователя передающего и принимающего процессов не совпадают, а пользователь посылающего процесса не является суперпользователем.

СМ. ТАКЖЕ
getpid(2), setpgrp(2), signal(2), sigset(2).
kill(1) в Справочнике пользователя.

ДИГНОСТИКА
При успешном завершении результат равен 0; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.