НАЗВА

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, сигнал не посилається, однак перевірка на помилки все ж відбудеться.

ПОВЕРНЕНЕ ЗНАЧЕННЯ

В разі успіху повертається 0. При невдачі повертається -1, а змінна errno встановлюється відповідним чином.

ПОМИЛКИ

EINVAL : Вказано недійсний сигнал.

ESRCH : Ідентифікатор чи група процесів не існує. Зауважте: існуючий процес може бути зомбі — процесом, котрий вже завершився, однак для нього ще не виконувався wait().

EPERM : Процес не має права надсилати сигнал якомусь із процесів-приймачів. Щоб процес мав дозвіл відіслати процесові pid сигнал, він або повинен мати привілеї користувача root, або ж його діючий чи фактичний ідентифікатор користувача повинен дорівнювати фактичному чи збереженому ідентифікатору користувача адресата. У випадку SIGCONT достатньо, щоб надсилач і адресат належали до одного сеансу.

ПРИМІТКИ

Неможливо послати сигнал задачі номер 1, процесові init, якщо він на цей сигнал не встановив обробник. Це зроблено для того, щоб випадково не вивести систему з ладу.

POSIX 1003.1-2001 вимагає, щоб kill (-1, sig) надсилав sig усім процесам, яким поточний процес має право сигналити, крім хіба деяких визначених реалізацією системних процесів. Linux дозволяє процесові просигналити собі самому, але в Linux виклик kill(-1, sig) не надсилає сигналу поточному процесові.

ВІДПОВІДНІСТЬ СТАНДАРТАМ

SVr4, SVID, POSIX.1, X/OPEN, BSD4.3, POSIX 1003.1-2001.

ДИВІТЬСЯ ТАКОЖ

? exit(2), exit(3), ?signal(2), ?signal(7).