kill(2)

NAAM
kill - zend een signaal naar een proces

BIBLIOTHEEK
Standaard C bibliotheek (libc, -lc)

SAMENVATTING
#include <signal.h>

int kill(pid_t pid, int sig);

    Feature Test Macro Requirements voor glibc (zie feature_test_macros(7)):

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 zijn aan het echte of opgeslagen set-user-ID van het doel proces. 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 wordt nul teruggegeven. Als er signalen werden gezonden naar een proces groep, dan betekent succes dat minstens een van de signalen werd afgeleverd. 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.

STANDAARDEN
POSIX.1-2024.

HISTORIE
4.3BSD, SVr4, POSIX.1-1988.

  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 Linux 2.6 up to and including Linux 2.6.7, there was a bug that meant that when sending signals to a process group, kill() failed with the error EPERM if the caller did not have permission to send the signal to any (rather than all) of the members of the process group. Notwithstanding this error return, the signal was still delivered to all of the processes for which the caller had permission to signal.

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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.