_rtl_open, _wrtl_open

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu io.h - Index


Header-Datei

io.h

Kategorie

Eingabe-/Ausgaberoutinen

Prototyp

int _rtl_open(const char *filename, int oflags);

int _wrtl_open(const wchar_t *path, int oflags);

Beschreibung

Öffnet eine Datei zum Lesen oder Schreiben.

Anmerkung:  Die Funktion _rtl_open ersetzt die Funktion _open, die veraltet ist.

_rtl_open öffnet die durch filename bezeichnete Datei und bereitet diese entsprechend dem Wert von oflags zum Lesen oder Schreiben vor. Die Datei wird stets im Binärmodus geöffnet.

In oflags werden die Flags aus den folgenden beiden Listen verwendet. Es kann nur ein Flag aus Liste 1 angegeben werden (ein Flag muss angegeben werden). Die Flags aus Liste 2 können in jeder logischen Kombination eingesetzt werden.

O_RDONLY

Zum Lesen öffnen.

O_WRONLY

Zum Schreiben öffnen

O_RDWR

Zum Lesen und Schreiben öffnen.

Die folgenden zusätzlichen Werte können in oflags (über eine ODER-Operation) aufgenommen werden:

O_NOINHERIT

Die Datei wird nicht an untergeordnete Programme weitergegeben.

SH_COMPAT

Die Datei kann auch von anderen im Modus SH_COMPAT geöffnet werden. Eine Datei, die über das Flag SH_COMPAT verfügt, muss von anderen unter Angabe des Flags SH_COMPAT geöffnet werden. Sie können erfordern, dass eine mit dem Flag SH_COMPAT versehene Datei, unter Verwendung einer ODER-Kombination mit einem anderen Flag (z. B. ist SH_COMPAT | SH_DENWR zulässig) geöffnet wird. Der Aufruf schlägt fehl, wenn die Datei bereits in einem anderen Modus für den gemeinsamen Zugriff geöffnet wurde.

SH_DENYRW

Nur das aktuelle Handle darf auf die Datei zugreifen.

SH_DENYWR

Erlaubt anderen nur, die Datei zum Lesen zu öffnen.

SH_DENYRD

Erlaubt anderen nur, die Datei zum Schreiben zu öffnen.

SH_DENYNO

Erlaubt den gemeinsamen Zugriff auf die Datei, andere können die Datei jedoch nicht im Modus SH_COMPAT öffnen.

Anmerkung:  Diese symbolischen Konstanten sind in fcntl.h und share.h definiert.

In einem Aufruf von _rtl_open kann nur ein SH_DENYxxx-Wert angegeben werden. Diese Attribute für den gemeinsamen Zugriff gelten zusätzlich zu den Sperren, die auf die Dateien gelegt werden.

Die maximale Anzahl gleichzeitiger Zugriffe auf die Datei wird durch HANDLE_MAX definiert.

Rückgabewert

Bei erfolgreicher Ausführung gibt _rtl_open einen nicht negativen Integerwert (das Datei-Handle) zurück. Der Dateizeiger, der die aktuelle Position innerhalb der Datei markiert, wird auf den Dateianfang gesetzt.

Andernfalls gibt die Funktion -1 zurück und weist der globalen Variablen errno einen der folgenden Werte zu:

EACCES

Permission denied (Zugriff verweigert)

EINVACC

Invalid access code (Ungültiger Zugriffscode)

EMFILE

Too many open files (Zu viele Dateien geöffnet)

ENOENT

Path or file not found (Pfad oder Dateiname nicht gefunden)

Beispiel

 #include <string.h>
 #include <stdio.h>
 #include <fcntl.h>
 #include <io.h>
 int main(void)
 {
    int handle;
    char msg[] = "Hello world";
    if ((handle = _rtl_open("TEST.$$$", O_RDWR)) == -1)
    {
       perror("Error:");
       return 1;
    }
    _rtl_write(handle, msg, strlen(msg));
    _rtl_close(handle);
    return 0;
 }

Portabilität

POSIX Win32 ANSI C ANSI C++

_rtl_open

+

_wrtl_open

Nur NT