Beschreibung | Wenn die Funktion mit POSIX-Funktionalität aufgerufen wird, verhält sie sich XPG5-konform, wie folgt: kill() sendet ein Signal sig an den Prozess oder die Prozessgruppe, der bzw. die durch pid angegeben wird. sig ist entweder eines der in der Datei signal.h angegebenen Signale oder gleich 0. Wenn sig gleich 0 ist (Nullsignal), wird eine Fehlerüberprüfung durchgeführt, ohne dass ein Signal gesendet wird. Das Nullsignal kann verwendet werden, um die Gültigkeit von pid zu überprüfen.
{_POSIX_SAVED_IDS} ist auf allen X/Open-konformen Systemen definiert. Damit ein Prozess ein Signal an den durch pid bezeichneten Prozess senden kann, muss die reale oder effektive Benutzernummer des sendenden Prozesses mit der realen oder gesicherten Benutzernummer des empfangenden Prozesses übereinstimmen, vorausgesetzt der sendende Prozess hat geeignete Zugriffsrechte.
Wenn pid größer als 0 ist, wird sig an den Prozess gesendet, dessen Prozessnummer gleich pid ist. Wenn pid gleich 0 ist, wird sig an alle Prozesse (außer einer Anzahl von Systemprozessen) gesendet, deren Prozessgruppennummer gleich der Prozessgruppennummer des Senders ist und für die der Prozess die Erlaubnis hat, ein Signal zu senden. Wenn pid gleich -1 ist, wird sig an alle Prozesse gesendet, für die der Prozess die Erlaubnis hat, ein Signal zu senden, außer den Systemprozessen. Wenn pid negativ, aber ungleich -1 ist, wird sig an alle Prozesse gesendet, deren Prozessgruppenummer gleich dem Absolutbetrag von pid ist, und für die der Prozess die Erlaubnis hat, ein Signal zu senden. Wenn durch den Wert von pid für den sendenden Prozess sig generiert wird und wenn sig nicht blockiert ist, wird, bevor kill() zurückkehrt, entweder sig oder zumindest ein anstehendes, nicht blockiertes Signal an den sendenden Prozess zugestellt. Die Benutzernummer wird nicht überprüft, wenn das Signal SIGCONT an einen Prozess gesendet wird, der Mitglied derselben Sitzung ist, wie der sendende Prozess. kill() ist erfolgreich, wenn der Prozess die Erlaubnis hat, sig an einen der durch pid angegebenen Prozesse zu senden. Wenn kill() fehlschlägt, wird kein Signal gesendet.
Werden Threads verwendet, so wirkt sich die Funktion auf den Prozess oder auf einen Thread wie folgt aust: Senden eines Signals an einen Prozess oder eine Prozessgruppe; Für den (Spezial-)Fall, dass der Wert von pid bewirkt, dass sig für den sendenden Prozess generiert wird, gilt: Wenn das Signal für den aufrufenden Thread nicht blockiert ist und wenn alle anderen Threads des Prozesses das Signal blockieren bzw. nicht in einer sigwait() -Funktion auf das Signal warten, wird entweder sig oder wenigstens ein anhängiges nicht blockiertes Signal dem sendenden Thread zugestellt, bevor kill() zurückkehrt. BS2000 Wenn die Funktion mit BS2000-Funktionalität aufgerufen wird, verhält sie sich abweichend, wie folgt: pid muss gleich 0 sein. Dadurch wird das Signal an den aufrufenden Prozess gesendet. Für sig kann folgende Untermenge der Signale, die in signal.h definiert sind, eingesetzt werden: Signal | STXIT-Klasse | Bedeutung | SIGHUP
| ABEND
| Abbruch der Dialogstationsleitung | SIGINT
| ESCPBRK
| Unterbrechung von der Dialogstation mit [K2] | SIGILL
| PROCHK
| Ausführung einer ungültigen Instruktion | SIGABRT
| -
| raise-Signal für Programmbeendigung mit _exit(-1) | SIGFPE
| PROCHK
| fehlerhafte Gleitpunktoperation | SIGKILL
| -
| raise-Signal für Programmbeendigung mit exit(-1) | SIGSEGV
| ERROR
| Speicherzugriff mit unerlaubtem Segmentzugriff | SIGALRM
| RTIMER
| ein Zeitintervall ist abgelaufen (Realzeit) | SIGTERM
| TERM
| Signal bei Programmbeendigung | SIGUSR1
| -
| vom Benutzer definiert | SIGUSR2
| -
| vom Benutzer definiert | SIGDVZ
| PROCHK
| Division durch 0 | SIGXCPU
| RUNOUT
| CPU-Zeit ist aufgebraucht | SIGTIM
| TIMER
| ein Zeit-Intervall ist abgelaufen (CPU-Zeit) | SIGINTR
| INTR
| SEND-MESSAGE-Kommando | (Ende)
|
Siehe auch | getpid() , raise() , setsid() , sigaction() , signal.h , sys/types.h .
|