open, _wopen
Nach oben zu io.h - Index
Header-Datei
io.h, fcntl.h
Kategorie
Eingabe-/Ausgaberoutinen
Prototyp
int open(const char *path, int access [, unsigned mode]);
int _wopen(const wchar_t *path, int access [, unsigned mode]);
Beschreibung
Öffnet eine Datei zum Lesen oder Schreiben.
open öffnet die durch path bezeichnete Datei und bereitet diese entsprechend dem Wert von access zum Lesen und/oder Schreiben vor.
Um eine Datei in einem bestimmten Modus zu erstellen, können Sie der globalen Variablen _fmode den entsprechenden Wert zuweisen oder im Aufruf von open die Optionen O_CREAT und O_TRUNC über ODER mit dem gewünschten Übersetzungsmodus verknüpfen.
open("XMP",O_CREAT|O_TRUNC|O_BINARY,S_IREAD)
Erstellt eine schreibgeschützte Binärmodus-Datei namens XMP, deren Länge auf 0 Bytes verkürzt wird, falls sie bereits vorhanden ist.
Bei open wird access durch die bitweise ODER-Verknüpfung von Flags aus den folgenden Listen gebildet: Es kann nur ein Flag aus der ersten Liste angegeben werden (ein Flag muss jedoch angegeben werden). Die übrigen Flags können in jeder logischen Kombination eingesetzt werden.
Diese symbolischen Konstanten sind in fcntl.h definiert.
O_RDONLY |
Nur zum Lesen öffnen. |
O_WRONLY |
Nur zum Schreiben öffnen. |
O_RDWR |
Zum Lesen und Schreiben öffnen. |
O_NDELAY |
Wird nicht verwendet, dient zur UNIX-Kompatibilität. |
O_APPEND |
Wenn dieses Bit gesetzt ist, wird der Dateizeiger vor jeder Schreiboperation an das Dateiende gesetzt. |
O_CREAT |
Wenn die Datei existiert, ist diese Flag-Einstellung unwirksam. Ist die Datei nicht vorhanden, wird sie erstellt und mit den Modusbits werden die Dateiattributbits wie in chmod gesetzt. |
O_TRUNC |
Wenn die Datei vorhanden ist, wird ihre Länge auf 0 verkürzt. Die Dateiattribute bleiben unverändert. |
O_EXCL |
Wird nur in Verbindung mit O_CREAT verwendet. Wenn die Datei bereits existiert, wird ein Fehler zurückgegeben. |
O_BINARY |
Dieses Flag kann angegeben werden, um die Datei explizit im Binärmodus zu öffnen. |
O_TEXT |
Dieses Flag kann angegeben werden, um die Datei explizit im Textmodus zu öffnen. |
Wird weder O_BINARY noch O_TEXT angegeben, wird die Datei in dem Modus geöffnet, der durch die globale Variable _fmode festgelegt wird.
Wenn das Flag O_CREAT zum Aufbau von access verwendet wird, muss für open eine der folgenden, in sys\stat.h definierten symbolischen Konstanten als Argument mode übergeben werden.
S_IWRITE |
Berechtigung zum Schreiben |
S_IREAD |
Berechtigung zum Lesen |
S_IREAD|S_IWRITE |
Berechtigung zum Lesen und Schreiben |
Rückgabewert
Bei erfolgreicher Ausführung gibt open eine nicht negative Ganzzahl (das Datei-Handle) zurück. Der Dateizeiger, der die aktuelle Position innerhalb der Datei markiert, wird auf den Dateianfang gesetzt.
Bei einem Fehler gibt die Funktion open -1 zurück, und die globale Variable errno wird auf einen der folgenden Werte gesetzt:
EACCES |
Permission denied (Zugriff verweigert) |
EINVACC |
Invalid access code (Ungültiger Zugriffscode) |
EMFILE |
Too many open files (Zu viele Dateien geöffnet) |
ENOENT |
No such file or directory (Datei oder Verzeichnis 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 = open("TEST.$$$", O_CREAT | O_TEXT)) == -1)
{
perror("Error:");
return 1;
}
write(handle, msg, strlen(msg));
close(handle);
return 0;
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
open |
+ |
+ |
||
_wopen |
Nur NT |