Wenn Sie ein Programm in der POSIX-Shell übersetzen, binden und starten (siehe auch Handbuch „C/C++ POSIX-Kommandos des C- und C++- bzw. C/C++-Compilers“), stehen alle Funktionen der C-Bibliothek zur Verfügung, wie sie im Folgenden aufgelistet sind. Dieser Funktionsumfang wird im Folgenden um POSIX-Funktionalität erweiterter Funktionsumfang genannt:
alle XPG4 Version 2-konformen Funktionen (in der Tabelle im Abschnitt "Umfang der unterstützten C-Bibliothek" in der Spalte „XPG4 Version 2“ mit x oder y gekennzeichnet)
alle XPG5-konformen Funktionen (in der Tabelle im Abschnitt "Umfang der unterstützten C-Bibliothek" in der Spalte „XPG5“ mit x oder y gekennzeichnet)
alle Funktionen, die in den Spalten "Andere Standards" oder "ANSI" in der Tabelle im Abschnitt "Umfang der unterstützten C-Bibliothek" mit x oder y gekennzeichnet sind
alle Funktionen, die als Erweiterung gekennzeichnet sind (in der Tabelle im Abschnitt "Umfang der unterstützten C-Bibliothek". in den Spalten „Erweiterung“ und „BS2000“ mit x gekennzeichnet)
bei den Funktionen, die mit xa gekennzeichnet sind, wird die XPG4 Version 2-konforme Funktionalität zur Verfügung gestellt. Dabei handelt es sich um folgende Funktionsgruppen:
die Zeitfunktionen
clock(),ctime(),ctime_r(),ftime(),gmtime(),local-time(), mktime(), time()die Funktionen zur Prozesssteuerung
abort(),alarm(),_exit(),kill(),raise(), signal()
bei den Funktionen, die in der Tabelle mit xd gekennzeichnet sind, besteht die Möglichkeit, im Einzelfall auf BS2000- oder auf POSIX-Dateien zuzugreifen. Dies kann gesteuert werden, wie es im Abschnitt "Wahl des Dateisystems und der Systemumgebung“ beschrieben ist.
Zu dieser Gruppe gehört auch die Funktionsystem(), da sie wie die Dateizugriffunktionen auf Quellprogrammebene gesteuert werden kann.
Intern wird ein Programm, das in der POSIX-Shell gestartet wurde, mit fork() und einer exec()-Funktion gestartet und hat damit einen Vaterprozess.
Sie erhalten den um die POSIX-Funktionalität erweiterten Funktionsumfang ebenfalls, wenn Sie das Programm in der BS2000-Kommandoebene übersetzen, binden und starten. Dabei müssen Sie jedoch Folgendes beachten:
Beim Übersetzen muss Folgendes beachtet werden:
Zusätzlich zur Bibliothek
$.SYSLNK.CRTEmuss die Bibliothek$.SYSLIB.POSIX-HEADERangegeben werden, damit die richtigen Include-Dateien gefunden werden (OptionSTD-INCLUDE-LIBRARY).Das Define
_OSD_POSIXmuss gesetzt werden. Dazu wählen Sie eine der folgenden Möglichkeiten:Im Quellcode vor der ersten
#include-Anweisung Folgendes angeben:#define _OSD_POSIXBeim Übersetzungslauf die Option
SOURCE-PROPERTIESsetzen:SOURCE-PROPERTIES=PAR(DEFINE=_OSD_POSIX)
Beim Binden muss der Bindeschalter
$.SYSLNK.CRTE.POSIXvorrangig vor der Bibliothek$.SYSLNK.CRTEbzw.$.SYSLNK.CRTE.PARTIAL-BINDeingebunden werden.
Dieses Programm, das auf der BS2000-Kommandoebene übersetzt, gebunden und gestartet wurde, läuft in einer Task und hat damit keinen Vaterprozess.