Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

fdopen - Datenstrom mit Dateideskriptor verbinden

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

FILE *fdopen(int fildes, const char *mode);

Beschreibung

fdopen() verbindet einen Datenstrom mit einem Dateideskriptor.

mode ist eine Zeichenkette, die einen der folgenden Werte annehmen kann:

r oder rb

Datei öffnen zum Lesen

w oder wb

Datei öffnen zum Schreiben

a oder ab

Datei öffnen zum Schreiben am Ende der Datei

r+, r+b oder rb+

Datei öffnen zum Aktualisieren (Lesen und Schreiben)

w+, w+b oder wb+

Datei öffnen zum Aktualisieren (Lesen und Schreiben)

a+, a+b oder ab+

Datei öffnen zum Aktualisieren (Lesen und Schreiben) am Ende der Datei

Die Bedeutung dieser Zeichenketten entspricht denen für fopen(), außer dass die mode-Argumente, die mit w beginnen, die Datei nicht auf die Länge 0 kürzen (siehe fopen()).

Das Argument mode für den Datenstrom darf nur diejenigen Zugriffsarten enthalten, die ursprünglich für die Datei festgelegt worden sind, d.h. eine Änderung der Zugriffsart mit fdopen() ist nicht möglich. Der zum Datenstrom gehörende Lese-/Schreibzeiger wird auf die Position des Lese-/Schreibzeigers gesetzt, der mit dem Dateideskriptor verbunden ist.

Die Kennzeichen für Fehler und Dateiende des Datenstroms werden gelöscht. fdopen() kann bewirken, dass das Feld st_atime der zu Grunde liegenden Datei zum Aktualisieren gekennzeichnet wird.

BS2000
Bei BS2000-Dateien wird das Feld st_atime ignoriert. Die Datei behält ihre ursprüngliche Zugriffsart. (Ende)

Für die automatische Konvertierung darf das b für binär in modus nicht angegeben werden. Die Umgebungsvariable IO_CONVERSION darf nicht vorhanden sein oder muss den Wert YES haben.

Returnwert

Zeiger auf einen Datenstrom



bei Erfolg.

 

Nullzeiger

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

Fehler

fdopen() schlägt fehl, wenn gilt: 

 

EBADF

fildes ist kein gültiger Dateideskriptor.

 

EINVAL

bei POSIX-Dateien: mode ist kein gültiger Modus.

 

EMFILE

{FOPEN_MAX}-Datenströme sind bereits für den aufrufenden Prozess geöffnet.

{STREAM_MAX}-Datenströme sind bereits für den aufrufenden Prozess geöffnet.

 

ENOMEM

Es ist nicht genügend Platz vorhanden, um einen Puffer zuzuweisen.

 

BS2000
Treten Fehler auf, z.B. ein ungültiger Dateideskriptor, liefert fdopen() weder ein definiertes Ergebnis noch eine Fehlermeldung. Das Programm bricht in diesem Fall nicht ab. (Ende) 

Hinweise

{STREAM_MAX} entspricht der Anzahl der Datenströme, die ein Prozess zur selben Zeit geöffnet haben darf und hat denselben Wert wie {FOPEN_MAX}, nämlich 2048.

Dateideskriptoren ergeben sich aus Aufrufen wie open(), dup(), creat() oder pipe().

Ob fdopen() für eine BS2000- oder eine POSIX-Datei ausgeführt wird, hängt von der Programmumgebung ab.

Siehe auch

fclose(), fopen(), open(), stdio.h, Abschnitt "Dateibearbeitung“.