kill(2) kill(2)
NAME
kill - Signal an Prozeß oder Prozeßgruppe senden
SYNTAX
#include <sys/types.h>
#include <signal.h>
int kill(pidt pid, int sig);
BESCHREIBUNG
kill() sendet ein Signal an einen Prozeß oder an eine Gruppe von Pro-
zessen. Der Prozeß oder die Gruppe von Prozessen, an die das Signal
gesendet werden soll, wird durch pid angegeben. Das zu sendende Signal
wird durch sig angegeben und ist entweder ein Signal von der in
signal.h [siehe signal(5)] angeführten Liste oder 0. Wenn sig 0 (das
Nullsignal) ist, erfolgt zwar die Fehlerprüfung, jedoch wird tatsäch-
lich kein Signal geschickt. Dies kann zur Prüfung der Gültigkeit von
pid verwendet werden.
Bei XSI-konformen Systemen ist POSIXSAVEDIDS vom System gesetzt.
Daher muß die reale oder effektive Benutzernummer des sendenden Pro-
zesses mit der realen oder [von exec(2)] gesicherten Benutzernummer
des empfangenden Prozesses übereinstimmen, wenn die effektive Benut-
zernummer des sendenden Prozesses nicht diejenige des Systemverwalters
ist, oder wenn sig SIGCONT ist und der sendende Prozeß die gleiche
Sitzungskennung wie der empfangende Prozeß hat.
Die Prozesse mit Prozeßnummer 0 und Prozeßnummer 1 sind spezielle
Systemprozesse und werden nachstehend als proc0 bzw. proc1 bezeichnet.
Wenn pid größer als Null ist, wird sig an den Prozeß geschickt, dessen
Prozeßnummer pid ist. pid kann gleich 1 sein.
Wenn pid negativ, aber nicht (pidt)-1 ist, wird sig an alle Prozesse
gesendet, deren Prozeßgruppennummer gleich dem absoluten Wert von pid
ist, und für die der Prozeß die Erlaubnis hat, ein Signal zu schicken.
Wenn pid (pidt)0 ist, wird sig an alle Prozesse mit Ausnahme von
proc0 bzw. proc1 geschickt, deren Prozeßgruppennummer gleich der Pro-
zeßgruppennummer des Senders ist. Um ein Signal an eine Prozeßgruppe
zu schicken, wird eine Erlaubnis benötigt.
Wenn pid (pidt)-1 ist, und die effektive Benutzernummer des sendenden
Prozesses nicht diejenige des Systemverwalters ist, wird sig an alle
Prozesse mit Ausnahme von proc0 bzw. proc1 gesendet, deren reale
Benutzernummer gleich der effektiven Benutzernummer des Absenders ist.
Wenn pid (pidt)-1, ist und die effektive Benutzernummer des Absenders
diejenige des Systemverwalters ist, wird sig an alle Prozesse mit Aus-
nahme von proc0 bzw. proc1 gesendet.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
kill(2) kill(2)
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
kill() ist erfolglos, und kein Signal wird gesendet, wenn einer oder
mehrere der nachstehenden Punkte zutreffen:
EINVAL sig ist keine gültige Signalnummer.
EINVAL sig ist SIGKILL und pid ist (pidt)1 (d. h. pid spezifiziert
proc1).
ESRCH Kein Prozeß (oder Prozeßgruppe) kann gefunden werden, der
dem von pid angegebenen Wert entspricht.
EPERM Die Benutzernummer des sendenden Prozesses ist nicht dieje-
nige des Systemverwalters, und seine reale bzw. effektive
Benutzernummer entspricht nicht der realen oder gesicherten
Nummer des empfangenden Prozesses, und der aufrufende Prozeß
sendet nicht gerade SIGCONT an einen Prozeß, der dieselbe
Sitzungsnummer hat.
ERGEBNIS
Nach erfolgreicher Beendigung wird 0 zurückgegeben. Andernfalls wird
-1 zurückgegeben, und errno wird zur Anzeige des Fehlers gesetzt.
HINWEISE
Mit sigsend() können Sie auf komfortablere Art Signale an Prozesse
senden. Verwenden Sie daher sigsend() anstelle von kill().
SIEHE AUCH
kill(1), getpid(2), getsid(2), setpgrp(2), sigaction(2), signal(2),
sigsend(2), signal(5), types(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98