Provided by:
manpages-pl-dev_20060617-1_all 
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
EINVAL Podano nieprawidłowy sygnał.
ESRCH 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
).
EPERM 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)