Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

bsd_signal - vereinfachte Signalbehandlung

&pagelevel(4)&pagelevel

Definition

#include <signal.h>

void (*bsd_signal(int sig, void (*func)(int))) (int);

Beschreibung

Die Funktion bsd_signal() stellt eine teilkompatible Schnittstelle für Programme bereit, die für historische Systemschnittstellen geschrieben wurden (siehe unten „Hinweis“).

Der Funktionsaufruf bsd_signal( sig , func ) wirkt, als ob er folgendermaßen implementiert wäre:

void (*bsd_signal(int  sig , void (* func )(int)))(int)
{
     struct sigaction act, oact;

     act.sa_handler =  func ;
     act.sa_flags = SA_RESTART;
     sigemptyset(&act.sa_mask);
     sigaddset(&act.sa_mask,  sig );
     if (sigaction( sig , &act, &oact) == -1)
          return(SIG_ERR);
     return(oact.sa_handler);
}

Die Ereignisbehandlungsfunktion sollte folgendermaßen deklariert werden:

void handler(int sig );

Dabei steht sig für die Signalnummer. Das Verhalten ist nicht definiert, wenn func eine Funktion ist, die mehr als ein Argument oder ein Argument eines anderen Typs hat.

Returnwert

Die vorausgegangene Aktion für sig



bei Erfolg.


SIG_ERR

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

Siehe sigaction() .

Hinweis

Diese Funktion ist ein direkter Ersatz für die BSD-Funktion signal() für einfache Anwendungen, für die eine Signalbehandlungsfunktion mit einem Argument installiert wird. Falls eine BSD-Signalbehandlungsfunktion installiert wird, die mehr als ein Argument erwartet, muss die Anwendung dahingehend geändert werden, dass sie sigaction() verwendet. Die Funktion bsd_signal() unterscheidet sich insofern von signal(), als das Flag SA_RESTART gesetzt ist und SA_RESETHAND gelöscht ist, wenn bsd_signal() verwendet wird. Der Status dieser Flags ist für signal() nicht angegeben.

Siehe auch

sigaction(), sigaddset(), sigemptyset(), signal(), signal.h .