Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

raise - Signal an aufrufenden Prozess senden

&pagelevel(4)&pagelevel

Definition

#include <signal.h>

int raise (int sig);

Beschreibung

Wenn die Funktion mit POSIX-Funktionalität aufgerufen wird, verhält sie sich XPG4-konform, wie folgt: raise() sendet das Signal sig an den aufrufenden Prozess. Die definierten Signale sind in signal.h aufgelistet.

Werden Threads verwendet, so wirkt sich die Funktion auf den Prozess oder auf einen Thread wie folgt aus:

  • Sendet ein Signal an den ablaufenden Thread; Die Wirkung von raise(sig) ist äuqivalent zum Aufruf pthread_kill(pthread_self(), sig).

  • BS2000
    Wenn die Funktion mit BS2000-Funktionalität aufgerufen wird, verhält sie sich abweichend, wie folgt:

  • Mit raise() lassen sich STXIT-Ereignisse simulieren sowie STXIT-unabhängige Signale senden (selbst definierte und vom C-Laufzeitsystem vordefinierte).

  • 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)

Returnwert

0

wenn das Signal erfolgreich gesendet wurde.

 

-1

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

Fehler

raise() schlägt fehl, wenn gilt:

Erweiterung


EINVAL

Der Wert von sig ist eine ungültige Signalnummer. (Ende)

Hinweise

raise(int sig) verwendet folgenden kill-Aufruf, um das Signal an den aufrufenden Prozess zu senden:

kill(getpid(), sig);

Unter kill() ist eine detaillierte Liste der Fehlerbedingungen aufgeführt.

BS2000 Mit Ausnahme von SIGKILL und SIGSTOP können die oben aufgelisteten Signale mit der Funktion signal() abgefangen werden (siehe signal()).

Wenn das Programm keine Behandlung von raise-Signalen vorsieht, wird der Prozess bei Eintritt eines Signals mit exit(-1) beendet und es werden folgende Meldungen ausgegeben:

"CCM0101 signal occured: signal"

"CCM0999 Exit -1"

Das Signal SIGABRT führt zu einer Programmbeendigung mit _exit(-1). Im Unterschied zu exit(-1) werden die mit atexit() registrierten Beendigungsroutinen nicht aufgerufen und offene Dateien nicht geschlossen.

Das Signal SIGKILL führt zu einer Programmbeendigung mit exit(-1). Im Unterschied zu SIGABRT kann SIGKILL nicht abgefangen werden, d.h. signal-Aufrufe, die als Argument den Namen einer selbst geschriebenen Funktion oder SIG_IGN angeben, sind für SI- GKILL nicht zulässig. (Ende)

Siehe auch

atexit(), exit(), _exit(), kill(), sigaction(), signal(), signal.h.