table of contents
kill(2) | System Calls Manual | kill(2) |
NAAM¶
kill - zend een signaal naar een proces
BIBLIOTHEEK¶
Standard C bibliotheek (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.
Om een proces toe te staan signalen te versturen moet het ofwel geprivilegieerd zijn (onder Linux: bezit van de CAP_KILL capaciteit in de gebruiker naam ruimte van het doel proces), of moet het echte of effective gebruiker ID van het versturende proces gelijk aan het echte of opgeslagen set-user-ID van het doel proces zijn. In het geval van een SIGCONT, volstaat het als de zendende en ontvangende processen tot dezelfde sessie behoren. (Historisch waren de regels verschillend; zie OPMERKINGEN.)
EIND WAARDE¶
Bij succes (minstens een signaal werd verstuurd), wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet.
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.
2 mei 2024 | Linux man-pages (unreleased) |