Provided by:
manpages-ru_0.98-4_all 
ИМЯ
kill - посылает сигнал процессу
ОБЗОР
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
ОПИСАНИЕ
Системный вызов kill может быть использован для посылки какого-либо
сигнала какому-либо процессу или группе процесса.
Если значение pid является положительным, сигнал sig посылается
процессу с идентификатором pid.
Если pid равен 0, то sig посылается каждому процессу, который входит в
группу текущего процесса.
Если pid равен -1, то sig посылается каждому процессу, за исключением
процесса с номером 1 (init), но есть нюансы, которые описываются ниже.
Если pid меньше чем -1, то sig посылается каждому процессу, который
входит в группу процесса -pid.
Если sig равен 0, то никакой сигнал не посылается, а только выполняется
проверка на ошибку.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха, возвращается ноль. При ошибке, возвращается -1 и
значение errno устанавливается соответствующим образом.
ОШИБКИ
EINVAL Задан неправильный сигнал.
ESRCH Идентификатор процесса pid или группа процесса не существуют.
Заметим, что существующий процесс может быть зомби - процессом,
который уже находится в состоянии завершения, но пока в котором
пока ещё не выполнился wait().
EPERM Текущий процесс не имеет прав на посылку сигнала к любому из
указанных процессов. Процессы, которые имеют права на посылку
сигнала процессу с номером pid должны иметь привелегии
суперпользователя или, реальный или эффективный идентификатор
пользователя процесса, посылающего сигнал, должен быть таким же
как реальный или эффективный идентификатор пользователя
процесса, принимающего сигнал. В случае, когда посылающий и
принимающий процессы относятся к одной сессии, становится
доступным сигнал SIGCONT.
ЗАМЕЧАНИЯ
Невозможно послать сигнал процессу с номером 1, т.е. процессу init, для
которого не устанавливается обработчик сигналов. Так сделано, чтобы
быть уверенным, что в случае какой-либо нештатной ситуации, рабата
системы не будет завершена аварийно.
POSIX 1003.1-2001 требует, чтобы kill(-1,sig) посылал sig всем
процессам, которым текущий процесс может послать сигналы, за
исключением возможно нескольких, определяемых реализацией системы
процессов. Linux разрешает любому процессу посылать сигнал себе, но в
Linux системный вызов kill(-1,sig) не посылает сигнал текущему
процессу.
ИСТОРИЯ LINUX
В различных версиях ядра, Linux применяет разные правила, касающиеся
прав доступа, которые требуются для непревилегированного процесса,
чтобы посылать сигнал другому процессу. В ядрах с 1.0 по 1.2.2, сигнал
может быть послан, если эффективный идентификатор пользователя,
посылающего сигнал процесса совпадает с эффективным идентифкатором
пользователя у процесса-получателя или реальный идентификатор
пользователя, посылающего сигнал процесса совпадает с реальным
идентифкатором пользователя у процесса-получателя. В ядрах с 1.2.3 по
1.3.77, сигнал может быть послан, если эффективный идентификатор
пользвателя, посылающего сигнал процесса совпадает или с реальным или с
эффективным идентифкатором пользователя у процесса-получателя. Текущие
правила, которые соответствуют стандартам POSIX 1003.1-2001 были
введены, начиная с ядра версии 1.3.78.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3, POSIX 1003.1-2001
СМОТРИ ТАКЖЕ
_exit(2), killpg(2), signal(2), tkill(2), exit(3), signal(7)
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2004