Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       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