Provided by: manpages-pl-dev_20051117-1_all bug

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)