_rtl_open, _wrtl_open
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 |