Dieses Kapitel gibt Hinweise, wie in C Contingency- bzw. STXIT-Routinen realisiert werden können.
Die für das Verständnis notwendige und ausführliche Beschreibung des Contingency-STXIT-Konzepts sowie der entsprechenden BS2000-Systemmakros finden Sie im Handbuch „Makroaufrufe an den Ablaufteil“.
Die ausführliche Beschreibung der in diesem Abschnitt erwähnten Bibliotheksfunktionen (signal
, raise
, alarm
, cenaco
, cdisco
, cstxit
, _cstxit
, longjmp
, setjmp
) finden Sie im Kapitel "Nachschlageteil" dieses Handbuchs.
Achtung
Die Verwendung einiger C-Bibliotheksfunktionen innerhalb von STXIT-Routinen kann zu undefiniertem Verhalten führen. Die Konsistenz der Bibliotheksfunktionen kann bei asynchronen Unterbrechungen nicht immer gewährleistet werden.
Zu undefiniertem Verhalten kommt es, wenn innerhalb der STXIT-Routine die gleiche bzw. eine zur gleichen Gruppe gehörende Bibliotheksfunktion (siehe Auflistung) ausgeführt werden soll, die durch das STXIT-Ereignis asynchron unterbrochen wurde.
„Kritische“ C-Bibliotheksfunktionen im Zusammenhang mit asynchronen Unterbrechungen sind
Speicherverwaltungsroutinen:
malloc
,calloc
,realloc
,free
Dateizugriffsfunktionen zum Öffnen und Schließen von Dateien:
fopen
/fopen64
,freopen/freopen64, open/open64, creat/creat64, fclose, close
Alle Dateizugriffs-, Dateiverwaltungs- und Ein-/Ausgabe-Funktionen, die auf die gleiche Datei angewendet werden
Zufallsgeneratorfunktionen:
rand
,srand
Zeitfunktionen:
localtime/localtime_r
,gmtime/gmtime_r
Funktionen zum An- und Abmelden von Contingency-Routinen:
cenaco
,cdisco
atexit
strtok
setlocale
Zu der Gruppe der „kritischen“ Funktionen gehören außerdem die Ein-/Ausgabefunktionen aus der C++-Standardbibliothek.