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¶
Uwaga! To tłumaczenie może być nieaktualne!
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 2 kill
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.