Scroll to navigation

KILL(2) Podręcznik programisty Linuksa KILL(2)

NAZWA

kill - wysłanie sygnału do procesu

SKŁADNIA

#include <sys/types.h>

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

OPIS

Funkcja systemowa kill może służyć do przesłania dowolnego sygnału do dowolnego procesu lub do dowolnej grupy procesów.

Jeśli pid ma wartość dodatnią, to sygnał sig jest przesyłany do procesu pid.

Jeśli pid jest równy 0, to sig jest przesyłany do wszystkich procesów należących do tej samej grupy, co proces bieżący.

Jeśli pid jest równy -1, to sygnał jest przesyłany do wszystkich procesów, oprócz procesu nr 1 (init), szczegóły poniżej.

Jeśli pid jest mniejszy niż -1, to sygnał jest przesyłany do wszystkich procesów należących do grupy procesów o numerze -pid.

If sig jest równy 0, to nie jest przesyłany żaden sygnał, ale nadal jest wykonywana kontrola błędów.

WARTOŚĆ ZWRACANA

Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i odpowiednio ustawiane errno.

BŁĘDY

Podano nieprawidłowy sygnał.
Pid lub grupa procesów nie istnieje. Należy zauważyć, że istniejący proces może być zombie, czyli procesem, który już popełnił samobójstwo, lecz jeszcze na niego nie zaczekano ( wait ).
Proces nie ma uprawnień do wysłania sygnału do któregokolwiek z otrzymujących go procesów. Aby proces miał prawo wysłać sygnał do procesu pid musi on mieć uprawnienia roota albo rzeczywisty lub efektywny ID użytkownika procesu wysyłającego musi być równy rzeczywistemu ID lub zachowanemu set UID procesu otrzymującego sygnał. W przypadku sygnału SIGCONT wystarcza, aby procesy wysyłający i otrzymujący należały do tej samej sesji.

UWAGI

Nie można wysyłać sygnału, dla którego nie ma zainstalowanego pogramu obsługi, do zadania numer 1, czyli procesu init. Zabezpiecza to przed przypadkowym załamaniem systemu.

POSIX 1003.1-2001 wymaga, aby kill(-1,sig) wysyłało sig do wszystkich procesów, do których aktualny proces może go wysłać, za ewentualnym wyjątkiem pewnych, zdefiniowanych w implementacji, procesów systemowych. Linux pozwala procesowi wysłać sygnał do samego siebie, ale wywołanie kill(-1,sig) pod Linuksem nie powoduje wysłania sygnału do bieżącego procesu.

HISTORIA LINUKSA

W różnych wersjach jądra, Linux wymusza różne reguły dotyczące uprawnień wymaganych od procesu nieuprzywilejowanego, aby mógł on wysłać sygnał do innego procesu. W jądrach od 1.0 do 1.2.2 sygnał mógł być wysłany, gdy efektywny identyfikator użytkownika wysyłającego jest taki sam, jak odbierającego, lub gdy rzeczywisty identyfikator użytkownika wysyłającego jest taki sam, jak odbierającego. Od jądra 1.2.3 aż do 1.3.77, sygnał mógł być wysłany, gdy efektywny identyfikator użytkownika wysyłającego jest taki sam, jak efektywny lub rzeczywisty identyfikator użytkownika odbierającego. Obecne zasady, zgodnie z POSIX 1003.1-2001, zostały przyjęte w jądrze 1.3.78.

ZGODNE Z

SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3, POSIX 1003.1-2001

ZOBACZ TAKŻE

_exit(2), killpg(2), signal(2), tkill(2), exit(3), signal(7)

2001-12-18 Linux 2.5.0