kill

Autres langues

Langue: pl

Autres versions - même langue

Version: 2001-12-18 (openSuse - 09/10/07)

Autres sections - même nom

Section: 2 (Appels système)

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)