Beim Programmstart sind drei Datenströme vordefiniert, die also nicht explizit geöffnet werden müssen:
Standard-Eingabe, um konventionelle Eingaben zu lesen
Standard-Ausgabe, um konventionelle Ausgaben zu schreiben
Standard-Fehlerausgabe, um Diagnoseausgaben zu schreiben
Der geöffnete Standard-Fehlerausgabestrom ist nicht voll gepuffert. Die Standard-Ein/-Ausgabeströme sind nur dann voll gepuffert, wenn der Strom nicht mit einem interaktiven Gerät in Verbindung steht. Ansonsten wird zeilenweise gepuffert.
Die Standard-Ein-/Ausgabeströme werden je nach Funktionalität (siehe Abschnitt "Wahl des Dateisystems und der Systemumgebung“) mit POSIX- oder BS2000-Dateien verbunden.
Wenn auf das DVS zugegriffen wird, wird folgende Beziehung hergestellt:
| SYSDTA SYSOUT |
In diesem Fall ist das Verhalten kompatibel zu vorhergehenden Versionen der C-Laufzeitbibiliothek (siehe auch Abschnitt "BS2000-Systemdateien“).
Funktionen, die nur POSIX-Funktionalität verwenden, können in diesem Fall nicht auf stdin
, stdout
oder stderr
angewendet werden.
Wenn auf das POSIX-Dateisystem zugegriffen wird, werden die Standard-Ein-/Ausgabe-Ströme in der Regel mit /dev/tty
verbunden (siehe auch Abschnitt "Verknüpfung der Ein/Ausgabeströme“).
Im Batch-Modus wird in jedem Fall mit SYSFILE verknüpft, da kein Terminal vorhanden ist. In Sohnprozessen kann auf Ein-/Ausgabe-Ströme, die mit SYSFILE verknüpft wurden, nicht mehr zugegriffen werden, auch wenn die Verknüpfung über POSIX erfolgt ist.
Wird die Verknüpfung der Standard-Ein-/Ausgabeströme durch die Wahl der POSIX-Funktionalität mit der Umgebungsvariablen gesteuert, kann man die Verknüpfung durch Veränderung der Variablen mit putenv()
beeinflussen: Wird mit einer exec
-Funktion ein Programm neu gestartet, werden bei der C-Laufzeitinitialisierung die Umgebungsvariablen neu ausgewertet und mit dem durch die exec
-Funktion gestarteten Programm entsprechend neu verknüpft.