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 eigenes Programm senden

&pagelevel(4)&pagelevel

Definition

#include <signal.h>

int raise(int sig);

raise sendet das Signal sig an das eigene Programm.

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

Parameter

 

int sig

Signal, das an das eigene Programm geschickt werden soll. Für sig können symbolische Konstanten eingesetzt werden, die in der folgenden Übersicht unter „SIGNR“ aufgelistet sind. Diese Konstanten sind in der Include-Datei <signal.h> definiert.

SIGNR

STXIT-Klasse

Bedeutung

SIGHUP

ABEND

Abbruch der Dialogstationsleitung

SIGINT

ESCPBRK

Unterbrechung von der Dialogstation (K2)

SIGILL

PROCHK

Ausführung einer ungültigen Instruktion

SIGABRT

-

raise-Signal für Programmbeendigung mit _exit(-1)

SIGFPE

PROCHK

fehlerhafte Gleitkommaoperation

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

SIGBPT +

SVC

Haltepunkt (derzeit nicht unterstützt)

SIGTIM

TIMER

ein Zeit-Intervall ist abgelaufen (CPU-Zeit)

SIGINTR

INTR

SEND-MESSAGE-Kommando

SIGSVC +

SVC

SVC-Aufruf (derzeit nicht unterstützt)

Die mit + gekennzeichneten Signale werden derzeit nicht unterstützt.

Returnwert

0

Das Signal wurde erfolgreich geschickt.


-1

Das Signal konnte nicht gesendet werden, weil sig keine gültige Signalnummer ist. Zusätzlich wird errno auf EINVAL gesetzt (ungültige Signalnummer).

Hinweise

Mit Ausnahme von SIGKILL können die raise-Signale mit der Funktion signal abgefangen werden. Ausführliche Informationen hierzu finden Sie bei signal.

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

"CCM0101 signal occured: signal"

"CCM0999 Exit -1"

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

Signal SIGKILL:
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 SIGKILL nicht zulässig.

Beispiel

Ein Programm, das sich selbst abbricht.

#include <signal.h>
int main(void)
{
  for(;;)
    raise(SIGKILL);
  return 0;
}

Siehe auch  alarm, atexit, exit, _exit, signal