kill(2): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med '= kill(2) = == NAMN == kill – skicka signal till en process == BIBLIOTEK == Standard C-biblioteket (''libc'', ''-lc'') == SYNTAX == <pre> #include <signal.h> int kill(pid_t pid, int sig); </pre> ; Krav på feature test-makron (glibc) – se feature_test_macros(7): : ''kill()'': _POSIX_C_SOURCE == BESKRIVNING == Systemanropet '''kill()''' kan användas för att skicka valfri signal till en processgrupp eller en enskild process. Om ''pid'' är positivt skickas...') |
(Ingen skillnad)
|
Nuvarande version från 29 september 2025 kl. 06.41
kill(2)
NAMN
kill – skicka signal till en process
BIBLIOTEK
Standard C-biblioteket (libc, -lc)
SYNTAX
#include <signal.h> int kill(pid_t pid, int sig);
- Krav på feature test-makron (glibc) – se feature_test_macros(7)
- kill(): _POSIX_C_SOURCE
BESKRIVNING
Systemanropet kill() kan användas för att skicka valfri signal till en processgrupp eller en enskild process.
Om pid är positivt skickas signalen sig till processen med det angivna process-ID:t.
Om pid är 0 skickas sig till alla processer i den anropande processens processgrupp.
Om pid är -1 skickas sig till alla processer som den anropande processen har rätt att signalera, utom process 1 (init), se dock nedan.
Om pid är mindre än -1 skickas sig till alla processer i den processgrupp vars ID är -pid.
Om sig är 0 skickas ingen signal, men existens- och behörighetskontroller utförs ändå; detta kan användas för att kontrollera existensen av ett process-ID eller processgrupps-ID som anroparen har rätt att signalera.
För att en process ska få skicka en signal måste den antingen vara privilegierad (under Linux: ha förmågan CAP_KILL i målprocessens användarrymd) eller så måste avsändarprocessens verkliga eller effektiva användar-ID vara lika med målprocessens verkliga eller sparade set-user-ID. För SIGCONT räcker det att avsändande och mottagande processer tillhör samma session. (Historiskt har reglerna varit annorlunda; se HISTORIK.)
RETURVÄRDE
Vid framgång returneras 0. Om signaler skickades till en processgrupp betyder framgång att minst en signal levererades. Vid fel returneras -1 och errno sätts för att indikera felet.
FEL
EINVAL – Ogiltig signal angavs. EPERM – Den anropande processen saknar rätt att skicka signalen till någon av målprocesserna. ESRCH – Målprocessen eller processgruppen finns inte. Observera att en existerande process kan vara en zombie (terminerad men ännu inte wait(2)-ad).
STANDARDER
POSIX.1-2008.
HISTORIK
POSIX.1-2001, SVr4, 4.3BSD.
- Linux-anteckningar
- Mellan olika kärnversioner har Linux haft olika regler för rättigheter för en icke-privilegierad process att skicka signaler.
- I Linux 1.0–1.2.2 krävdes att avsändarens effektiva UID matchade målets effektiva UID, eller avsändarens verkliga UID matchade målets verkliga UID.
- I Linux 1.2.3–1.3.77 krävdes att avsändarens effektiva UID matchade målets verkliga eller effektiva UID.
- Nuvarande regler, som följer POSIX.1, infördes i Linux 1.3.78.
ANMÄRKNINGAR
De enda signaler som kan skickas till process-ID 1 (init) är sådana som init uttryckligen har installerat signalhanterare för. Detta för att förhindra att systemet oavsiktligt tas ned.
POSIX.1 kräver att kill(-1, sig) skickar sig till alla processer som anroparen får signalera, med undantag för eventuella implementeringsdefinierade systemprocesser. Linux tillåter en process att signalera sig själv, men på Linux signalerar anropet kill(-1, sig) inte den anropande processen.
POSIX.1 kräver att om en process skickar en signal till sig själv, och den sändande tråden inte har blockerat signalen och ingen annan tråd har den oblockerad eller väntar på den via sigwait(3), så måste åtminstone en oblockerad signal levereras till den sändande tråden innan kill() returnerar.
BUGGAR
I Linux 2.6 upp till och med 2.6.7 fanns en bugg som innebar att när signaler skickades till en processgrupp misslyckades kill() med felet EPERM om anroparen saknade rätt att skicka signalen till någon (i stället för alla) av gruppens medlemmar. Trots felreturen levererades signalen ändå till alla processer som anroparen hade rätt att signalera.
SE ÄVEN
kill(1), _exit(2), pidfd_send_signal(2), signal(2), tkill(2), exit(3), killpg(3), sigqueue(3), capabilities(7), credentials(7), signal(7), sigwait(3)
COLOPHON
Denna sida är en del av projektet man-pages (dokumentation av användarrymden för Linuxkärnan och C-biblioteket). Projektinformation: <https://www.kernel.org/doc/man-pages/> Buggrapporter för denna manualsida: <https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING>
Sidan hämtades från tar-arkivet man-pages-6.15.tar.gz från <https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/> den 11 augusti 2025.
Sidslut
Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man2/kill.2.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.