sigsend(2) sigsend(2)
NAME
sigsend, sigsendset - Signal an Prozeß/Prozeßgruppe senden
SYNTAX
#include <sys/types.h>
#include <sys/signal.h>
#include <sys/procset.h>
int sigsend(idtypet idtype, idt id, int sig);
int sigsendset(procsett *psp, int sig);
BESCHREIBUNG
sigsend() sendet ein Signal an einen Prozeß oder an eine Prozeßgruppe,
die durch id und idtype angegeben wird. Das zu sendende Signal wird
durch sig angegeben und ist entweder Null oder einer der unter
signal(5) definierten Werte. Ist sig gleich Null (das Nullsignal),
geschieht eine Fehlerüberprüfung, aber es wird kein Signal gesendet.
Dies dient dazu, um die Gültigkeit von id und idtype zu überprüfen.
Die reale oder effektive Benutzernummer des sendenden Prozesses muß
mit der realen oder effektiven Benutzernummer des empfangenden Prozes-
ses übereinstimmen, es sei denn, die effektive Benutzernummer des sen-
denden Prozesses ist die des Systemverwalters, oder sig ist SIGCONT
und der sendende Prozeß hat dieselbe Sitzungsnummer wie der empfan-
gende Prozeß.
Die möglichen Werte für idtype haben folgende Auswirkung:
PPID sig wird an den Prozeß mit der Nummer id gesendet.
PPPID sig wird an den Vaterprozeß gesendet, und id wird ignoriert.
PPGID sig wird an jeden Prozeß mit der Prozeßgruppennummer id
gesendet.
PSID sig wird an jeden Prozeß mit der Sitzungsnummer id gesendet.
PUID sig wird an jeden Prozeß mit der effektiven Benutzernummer
id gesendet.
PGID sig wird an jeden Prozeß mit der effektiven Gruppennummer id
gesendet.
PCID sig wird an jeden Prozeß mit der Verwaltungsklassennummer id
gesendet [siehe priocntl(2)].
PALL sig wird an alle Prozesse gesendet, und id wird ignoriert.
PMYID der Wert id wird vom aufrufenden Prozeß übernommen.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
sigsend(2) sigsend(2)
Der Prozeß mit der Prozeßnummer 0 ist immer ausgeschlossen. Der Prozeß
mit der Prozeßnummer 1 wird ausgeschlossen, es sei denn idtype ist
gleich PPID.
sigsendset() bietet eine alternative Schnittstelle zum Senden von Sig-
nalen an Prozeßmengen. Diese Funktion sendet Signale an Prozeßmengen,
die durch psp angegeben werden. psp ist dabei ein Zeiger auf eine
Struktur vom Typ procsett, die in der Datei sys/procset.h definiert
wird und die folgenden Komponenten enthält:
idopt pop;
dtypet plidtype;
idt plid;
idtypet pridtype;
idt prid;
plidtype und plid geben den ID-Typ und die ID einer ("linken") Pro-
zeßmenge an; pridtype und prid geben den ID-Typ und die ID einer
("rechten") Prozeßmenge an. ID-Typen und IDs werden genau wie bei den
Argumenten idtype und id im Systemaufruf sigsend angegeben. pop gibt
die Operation an, welche mit den beiden Prozeßmengen ausgeführt werden
soll, um eine Prozeßmenge zu erhalten, auf die schließlich der System-
aufruf angewendet wird. Die gültigen Werte für pop und die angegebe-
nen Prozesse sind:
POPDIFF Differenz: Prozesse in der linken und nicht in der rechten
Menge.
POPAND Schnittmenge: Prozesse in der linken und rechten Menge.
POPOR Vereinigungsmenge: Prozesse in der linken oder rechten oder
in beiden Mengen.
POPXOR Exklusiv-ODER: Prozesse in der linken oder der rechten
Menge, aber nicht in beiden.
sigsend() und sigsendset() schlagen fehl, wenn wenigstens eine der
folgenden Bedingungen gegeben ist:
EINVAL sig ist keine gültige Signalnummer.
EINVAL idtype enthält keinen gültigen Feldwert.
EINVAL sig ist SIGKILL, idtype ist gleich PPID und id ist 1
(proc1).
ESRCH Es konnten keine Prozesse gefunden werden, welche id und
idtype entsprechen.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
sigsend(2) sigsend(2)
EPERM Die Benutzernummer des sendenden Prozesses ist nicht die
des Systemverwalters, und die reale oder effektive Benut-
zernummer entspricht nicht der realen oder effektiven
Benutzernummer des empfangenden Prozesses, und der aufru-
fende Prozeß sendet nicht das Signal SIGCONT an einen Pro-
zeß aus derselben Sitzung.
sigsendset() schlägt außerdem fehl:
EFAULT psp weist über den zugewiesenen Adreßraum des Prozesses
hinaus.
ERGEBNIS
Bei Erfolg gibt sigsend() 0 zurück. Bei Fehler wird -1 zurückgegeben
und errno gesetzt, um den Fehler anzuzeigen.
SIEHE AUCH
kill(1), getpid(2), getpgrp(2), kill(2), priocntl(2), setpgid(2),
signal(2), signal(5).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98