kill(2) | System Calls Manual | kill(2) |
NAAM
kill - zend een signaal naar een proces
BIBLIOTHEEK
Standard C library (libc, -lc)
SAMENVATTING
#include <stdio.h>
int kill(pid_t pid, int sig);
kill():
_POSIX_C_SOURCE
BESCHRIJVING
De kill() systeem aanroep kan gebruikt worden om elk signaal naar elke proces groep of proces te zenden.
Als pid positief is, dan wordt het signaal sig naar het proces met het ID gespecificeerd door pid verzonden.
Als pid gelijk is aan 0, dan wordt sig naar elk proces gezonden in de proces groep van het huidige proces.
Als pid gelijk is aan -1 dan wordt sig naar elk proces gestuurd mits het huidige proces gerechtigd is signalen te sturen, behalve voor het proces 1 (init), maar zie hieronder.
Als pid kleiner is dan -1 dan wordt sig gezonden naar elk proces in de proces groep -pid.
Als sig 0 is dan wordt geen signaal verzonden, maar bestaans- en rechten controles worden nog uitgevoerd; dit kan gebruikt worden om te controleren op het bestaan van een proces ID of een proces groep ID die de aanroeper mag signaleren.
For a process to have permission to send a signal, it must either be privileged (under Linux: have the CAP_KILL capability in the user namespace of the target process), or the real or effective user ID of the sending process must equal the real or saved set-user-ID of the target process. In the case of SIGCONT, it suffices when the sending and receiving processes belong to the same session. (Historically, the rules were different; see HISTORY.)
EIND WAARDE
On success, zero is returned. If signals were sent to a process group, success means that at least one signal was delivered. On error, -1 is returned, and errno is set to indicate the error.
FOUTEN
- EINVAL
- Een ongeldig signaal werd opgegeven.
- EPERM
- Het proces heeft geen toestemming om een signaal naar welk ontvangend proces dan ook te zenden.
- ESRCH
- De doel proces of proces-groep bestaat niet. Merk op dat een bestaand proces een zombie kan zijn, een proces dat al beëindigd is, maar waar nog niet op gewait()d {gewacht} wordt.
VOLDOET AAN
POSIX.1-2008.
GESCHIEDENIS
POSIX.1-2001, SVr4, 4.3BSD.
Linux notities
Over de diverse kernel versies heeft Linux verschillende regels afgedwongen voor de rechten die een niet-geprivilegieerd proces vereist om signalen naar andere processen te sturen In de kernels 1.0 tot 1.2.2 mocht een signaal verstuurd worden als het effectieve gebruiker ID van de zender overeen kwam het het effectieve gebruiker ID van het doel, of als het echte gebruiker ID overeen kwam met het echte gebruiker ID van het doel. Van kernel 1.2.3 tot 1.3.77 mocht een signaal verstuurd worden als het effectieve gebruiker ID van de zender overeen kwam met ofwel het echte ofwel het effectieve gebruiker ID van het doel. De huidige regels, die voldoen aan POSIX.1, werden aangepast in kernel 1.3.78.
OPMERKINGEN
De enige signalen die verstuurd kunnen worden naar het proces ID 1, het init proces, zie die voor welke init expliciet signaal verwerkers installeerde. Dit werd gedaan om te verzekeren dat het systeem niet per ongelijk afgesloten word.
POSIX.1 vereist dat kill(-1,sig) sig verstuurd aan alle processen waarnaar het huidige proces signalen mag versturen, behalve mogelijk voor sommige implementatie afhankelijke systeem processen. Linux staat toe dat een proces signalen aan zichzelf mag versturen, maar op Linux signaleert de aanroep kill(-1, sig) het roepende proces niet.
POSIX.1 vereist dat als een proces een signaal naar zichzelf stuurt, en de sturende thread heeft het signaal niet geblokkeerd en geen andere thread heeft het niet geblokkeerd of wacht op het in sigwait(3), dan moet minstens een niet geblokkeerd signaal worden afgeleverd aan de sturende thread voor dat kill() terugkeert.
BUGS
In de 2.6 kernels tot en met 2.6.7 zat een bug die inhield dat bij het versturen van signalen naar een proces groep dat kill() faalde met de fout EPERM als de aanroeper niet de rechten had om een signaal naar ieder (liever dan elk) van de leden van een proces groep. Ondanks het melden van de fout, werd het signaal afgeleverd bij alle processen voor welk de zender de rechten had om te sturen.
ZIE OOK
kill(1), _exit(2), pidfd_send_signal(2), signal(2), tkill(2), exit(3), killpg(3), sigqueue(3), capabilities(7), credentials(7), signal(7)
VERTALING
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.
12 februari 2025 | Linux man-pagina's 6.12 |