plucky (2) kill.2.gz

Provided by: manpages-pl-dev_4.25.1-1_all bug

NAZWA

       kill - wysyła sygnał do procesu

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <signal.h>

       int kill(pid_t pid, int sig);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       kill():
           _POSIX_C_SOURCE

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 o identyfikatorze 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 wywołujący.

       Jeśli  pid  jest równy -1, to sygnał jest przesyłany do wszystkich procesów, do których proces wywołujący
       ma prawo wysyłać sygnały, 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 identyfikatorze równym -pid.

       Jeśli  sig  jest  równy  0,  to nie jest wysyłany żaden sygnał, ale wciąż przeprowadzane jest sprawdzenie
       istnienia i uprawnień; można to wykorzystać w  celu  sprawdzenia  istnienia  identyfikatora  procesu  lub
       identyfikatora grupy procesu, w przypadku których wywołujący ma prawo wysyłać sygnały.

       Aby  proces  miał  prawo  wysłać  sygnał,  musi  być albo uprzywilejowany (w Linuksie: posiadać przywilej
       CAP_KILL (ang. capability) w przestrzeni nazw  użytkownika  procesu  docelowego),  albo  rzeczywisty  lub
       efektywny  identyfikator użytkownika procesu wysyłającego musi być równy rzeczywistemu ID lub zachowanemu
       set UID procesu docelowego. W przypadku sygnału SIGCONT wystarcza, aby procesy wysyłający  i  otrzymujący
       należały do tej samej sesji (historycznie zasady te były inne; zob. UWAGI).

WARTOŚĆ ZWRACANA

       Po  pomyślnym  zakończeniu  (gdy  wysłano co najmniej jeden sygnał) zwracane jest zero. w przypadku błędu
       zwracane jest -1 i ustawiane errno wskazując błąd.

BŁĘDY

       EINVAL Podano nieprawidłowy sygnał.

       EPERM  Proces wywołujący nie ma uprawnień do wysyłania sygnału do żadnego z procesów docelowych.

       ESRCH  Docelowy proces lub grupa procesów nie istnieje. Należy zauważyć, że istniejący  proces  może  być
              zombie,  czyli  procesem,  który  już  zakończył  wykonanie,  lecz  jeszcze na niego nie zaczekano
              (wait(2)).

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001, SVr4, 4.3BSD.

   Uwagi linuksowe
       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 Linuksie 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 Linuksa 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.1, zostały przyjęte w Linuksie 1.3.78.

UWAGI

       Jedyne sygnały, jakie można wysłać do procesu o identyfikatorze 1 — procesu init —  to  te,  dla  których
       init jawnie zainstalował procedurę obsługi sygnału. Zabezpiecza to przed przypadkowym załamaniem systemu.

       POSIX.1  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 procesu wywołującego.

       W przypadku gdy proces wysyła sygnał do siebie samego, a wysyłający wątek nie  blokuje  sygnału  i  żaden
       inny  wątek go nie odblokował, ani nie czeka na niego w sigwait(3), POSIX.1 wymaga, aby co najmniej jeden
       odblokowany sygnał został dostarczony do wysyłającego wątku przed powrotem kill().

USTERKI

       W Linuksie 2.6 do Linuksa 2.6.7 włącznie istniał błąd, który w  przypadku  wysyłania  sygnałów  do  grupy
       procesu  powodował,  że  kill()  zawodziło z błędem EPERM, gdy wywołujący nie miał uprawnień do wysyłania
       sygnału do któregokolwiek (zamiast, poprawnie, wszystkich)  członków  grupy  procesu.  Pomimo  zwracanego
       błędu, sygnał docierał jednak do wszystkich procesów, do których wywołujący miał prawo wysyłać sygnały.

ZOBACZ TAKŻE

       kill(1),   _exit(2),   pidfd_send_signal(2),   signal(2),   tkill(2),  exit(3),  killpg(3),  sigqueue(3),
       capabilities(7), credentials(7), signal(7)

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika  są:  Przemek  Borys  <pborys@dione.ids.pl>,
       Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając się z GNU General Public License w wersji  3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  lub
       nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy dyskusyjnej ⟨manpages-pl-
       list@lists.sourceforge.net⟩.