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/.