siginterrupt(3) (BSD Compatibility Package) siginterrupt(3)
NAME
siginterrupt - Unterbrechen von Systemaufrufen durch Signale zulassen
SYNTAX
/usr/ucb/cc [flag ...] file ... -lucb
#include <signal.h>
int siginterrupt(int sig, int flag);
BESCHREIBUNG
siginterrupt wird verwendet, um das Neustartverhalten von Systemaufru-
fen zu ändern, wenn der Systemaufruf durch das angegebene Signal
unterbrochen wird. Hat das Flag den Wert (0), werden Systemaufrufe neu
gestartet, wenn sie durch das angegebene Signal unterbrochen werden,
und noch keine Daten übertragen wurden. Der Neustart des Systenmauf-
rufs entspricht dem Standardverhalten bei Verwendung der Routine
signal.
Die Funktion siginterrupt() wird verwendet, um das Neustartverhalten
einer Funktion zu ändern, wenn diese durch das angegebene Signal
unterbrochen wird. Die Funktion siginterrupt(sig, flag) hat dieselbe
Auswirkung wie folgende Angaben:
siginterrupt(int sig, int flag) {
int ret;
struct sigaction act;
(void) sigaction(sig, NULL, &act);
if (flag)
act.saflags &= ~SARESTART;
else
act.saflags |= SARESTART;
ret = sigaction(sig, &act, NULL);
return ret;
}
Hat das Flag den Wert (1), wird ein Neustart des Systemaufrufs deakti-
viert. Wenn ein Systemaufruf durch das angegebene Signal unterbrochen
wird und noch keine Daten übertragen wurden, gibt der Systemaufruf -1
zurück und setzt errno auf EINTR. Unterbrochene Systemaufrufe, die
bereits mit der Übertragung von Daten begonnen haben, geben die Menge
der tatsächlich übertragenen Daten zurück.
Wird während der Ausführung einer Routine zur Signalbehandlung
siginterrupt aufgerufen, wird die neue Aktion erst beim nächsten auf-
gefangenen Signal ausgeführt.
FEHLER
Die Funktion siginterrupt() schlägt bei folgender Bedingung fehl:
EINVAL Das Argument sig ist keine gültige Signalnummer.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
siginterrupt(3) (BSD Compatibility Package) siginterrupt(3)
RÜCKGABEWERT
Der Wert 0 zeigt an, daß der Aufruf erfolgreich war. Der Wert -1 zeigt
an, daß eine ungültige Signalnummer angegeben wurde.
HINWEISE
Die Funktion siginterrupt() unterstützt Programme, die für ältere
Systemschnittstellen geschrieben wurden. Wenn eine portierbare Anwen-
dung geschrieben oder neu geschrieben wird, sollte die Funktion
sigaction() mit dem Flag SARESTART anstelle von siginterrupt() ver-
wendet werden.
Diese Bibliotheksroutine verwendet eine Erweiterung des Systemaufrufs
sigvec, die in BSD 4.2 nicht verfügbar ist, und sollte daher nicht
verwendet werden, wenn das Programm abwärts kompatibel sein muß.
SIEHE AUCH
sigaction(2), signal(2), sigblock(3), sigpause(3), sigsetmask(3),
sigvec(3), signal(3-ucb).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98