Freigeben über


_open, _wopen

Öffnet eine Datei.Diese Funktionen sind veraltet, da sicherere Versionen verfügbar sind. Weitere Informationen finden Sie unter _sopen_s, _wsopen_s.

int _open(
   const char *filename,
   int oflag [,
   int pmode] 
);
int _wopen(
   const wchar_t *filename,
   int oflag [,
   int pmode] 
);

Parameter

  • filename
    Dateiname

  • oflag
    Art der Vorgänge ermöglicht.

  • pmode
    Der Modus Berechtigungen.

Rückgabewert

Jede dieser Funktionen gibt einen Dateideskriptor für die geöffnete Datei zurück.Ein Rückgabewert -1 gibt einen Fehler an. In diesem Fall errno auf einen der folgenden Werte festgelegt wird.

  • EACCES
    Versucht, schreibgeschützte Datei zum Schreiben, Freigaben Modus der Datei zu öffnen oder bestimmter Vorgänge nicht angegebene Pfad ist Verzeichnis.

  • EEXIST
    _O_CREAT und _O_EXCL , aber angegebenen Flags filename ist bereits vorhanden.

  • EINVAL
    Ungültiges oflag oder pmode-Argument.

  • EMFILE
    Nicht mehr Dateideskriptoren geöffneten Dateien zu viele (nur auf Englisch verfügbar).

  • ENOENT
    Datei oder Pfad nicht gefunden.

Weitere Informationen über diese und andere Rückgabecodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die _open-Funktion öffnet die Datei, die von filename angegeben wird, und bereitet die Datei zum Lesen oder Schreiben vor, wie durch oflagangegeben._wopen ist eine Breitzeichen-Version von _open. filename das Argument zu _wopen ist eine Zeichenfolge mit Breitzeichen._wopen und _open verhalten sich ansonsten unterscheiden.

Zuweisung generischer Textroutinen

Tchar.h-Routine

_UNICODE als auch _MBCS nicht definiert

_MBCS definieren

_UNICODE definiert

_topen

_open

_open

_wopen

oflag ist ein ganzzahliger Ausdruck, der von einem oder mehreren der folgenden Manifesten Konstanten oder der konstanten Kombinationen definierten in Fcntl.h gebildet wird.

  • _O_APPEND
    Verschiebt Dateizeiger für Dateiende vor jedem Schreibvorgang.

  • _O_BINARY
    Öffnet Datei im binären (unübersetzten Modus).(Siehe fopen für eine Beschreibung des binären Modus).

  • _O_CREAT
    Erstellt und öffnet eine neue Datei zum Schreiben.Hat keine Auswirkungen, wenn die Datei, die von filename angegeben wird, vorhanden ist.pmode-Argument ist erforderlich, wenn _O_CREAT angegeben wird.

  • _O_CREAT| _O_SHORT_LIVED
    Erstellen Sie eine Datei als temporär und wenn möglich, leeren Sie nicht auf den Datenträger.pmode-Argument ist erforderlich, wenn _O_CREAT angegeben wird.

  • _O_CREAT| _O_TEMPORARY
    Erstellen Sie eine Datei als temporär; die Datei wird gelöscht, wenn der letzte Dateideskriptor geschlossen wird.pmode-Argument ist erforderlich, wenn _O_CREAT angegeben wird.

  • _O_CREAT| _O_EXCL
    Gibt einen Fehlerwert zurück, wenn die Datei, die von filename angegeben wird, vorhanden ist.Gilt nur, wenn Sie mit _O_CREATverwendet werden.

  • _O_NOINHERIT
    Verhindert Erstellung eines Deskriptors der gemeinsamen Datei.

  • _O_RANDOM
    Gibt an, dass zwischenspeichernd für optimiert ist, aber nicht beschränkt auf wahlfreier Zugriff vom Datenträger an.

  • _O_RDONLY
    Öffnet eine Datei nur zum Lesen. darf nicht mit _O_RDWR oder _O_WRONLYangegeben werden.

  • _O_RDWR
    Öffnet Datei für Lese- und Schreibvorgänge. Sie können dieses Flag mit _O_RDONLY oder _O_WRONLYnicht angeben.

  • _O_SEQUENTIAL
    Gibt an, dass zwischenspeichernd für optimiert ist, aber nicht beschränkt, sequenzieller Zugriff vom Datenträger an.

  • _O_TEXT
    Öffnet eine Datei im Modus des Texts (Verschiebung).(Weitere Informationen finden Sie unter Text und Binärdatei-Modus-Datei E/A und fopen).

  • _O_TRUNC
    Öffnet eine Datei und schneidet sie dem Länge 0; Die Datei muss Schreibberechtigungen verfügen.Sie können dieses Flag mit _O_RDONLYnicht angeben._O_TRUNC verwendete mit _O_CREAT öffnet eine vorhandene Datei oder erstellt eine neue Datei.

    HinweisHinweis

    Das Flag _O_TRUNC zerstört den Inhalt der angegebenen Datei.

  • _O_WRONLY
    Öffnet die Datei nur zum Schreiben. darf nicht mit _O_RDONLY oder _O_RDWRangegeben werden.

  • _O_U16TEXT
    Öffnen Sie die Datei im Modus Unicode UTF-16.

  • _O_U8TEXT
    Öffnen Sie die Datei im Modus Unicode UTF-8-Codierung.

  • _O_WTEXT
    Öffnen Sie die Datei im Unicode-Modus.

Um die Datei- zugriffsart anzugeben, müssen Sie entweder _O_RDONLY, _O_RDWRoder _O_WRONLYangeben.Es gibt keinen Standardwert für Zugriffsmodus.

Wenn _O_WTEXT verwendet wird, um eine Datei zum Lesen zu öffnen, liest _open den Anfang der Datei und Überprüfung für eine Bytereihenfolgenmarkierung (BOM).Wenn BOM vorhanden sind, wird die Datei als UTF-8 oder UTF-16LE je nach BOM behandelt.Wenn keine BOM vorhanden ist, wird die Datei als ANSI behandelt.Wenn eine Datei zum Schreiben mit _O_WTEXTgeöffnet wird, wird UTF-16 verwendet.Wenn _O_UTF8 verwendet wird, wird die Datei immer als UTF-8 geöffnet und _O_UTF16 verwendet wird, wird die Datei immer als UTF-16 unabhängig davon eine vorherige Einstellung oder Bytereihenfolgemarkierung geöffnet.

Wenn _open mit _O_WRONLY|_O_APPEND (fügen Sie _O_WTEXTModus) und _O_U16TEXT, oder _O_U8TEXTaufgerufen wird, werden zuerst versucht, die Datei zum Lesen, Schreiben zu öffnen und lesen Sie BOM, dann erneut öffnen Sie nur den geschrieben werden soll.Wenn das Öffnen der Datei zum Lesen und Schreiben fehlschlägt, wird sie nur für die Datei geschrieben und verwendet den Standardwert für das Unicode-Modus festlegen.

Wenn zwei oder mehrere Manifeste Konstanten verwendet werden, um das oflag-Argument zu bilden, werden die Konstanten mit dem bitweisen Operator OR kombiniert ( |).Eine Erörterung Binärdatei und der Textmodus finden Sie unter Text und Binärdatei-Modus-Datei E/A.

Das pmode-Argument ist nur erforderlich, wenn _O_CREAT angegeben wird.Wenn die Datei bereits vorhanden ist, wird pmode ignoriert.Andernfalls wird die Datei berechtigungs pmode Einstellungen an, die festgelegt werden, wenn die neue Datei zum ersten Mal geschlossen wird._open wendet die aktuelle Dateiberechtigungsmaske zu pmode , bevor die Berechtigungen festgelegt werden sollen (weitere Informationen finden Sie unter _umask).pmode ist ein ganzzahliger Ausdruck, der ein Manifest enthalten oder beide der folgenden Konstanten definiert in SYS \ Stat.h.

  • _S_IREAD
    nur Lesevorgänge zulässig.

  • _S_IWRITE
    Schreiben effizienter erlaubt sind zulässig (Lese- und Schreibzugriff).

  • _S_IREAD | _S_IWRITE
    Lese- und Schreibvorgänge nicht zulässig.

Wenn beide Konstanten angegeben sind, werden sie mit dem bitweisen Operator OR verknüpft ( |).In Windows NT sind alle Dateien gelesen werden, weshalb lesegeschützte Berechtigung nicht verfügbar. _S_IREADund so die Modi _S_IWRITE | _S_IWRITE sind äquivalent.

Wenn ein anderer Wert als das oben stehende für pmode angegeben ist (auch wenn er eine gültige pmode in ein anderes Betriebssystem könnte) angeben oder einen anderen Wert als den zulässigen oflag-Werte angegeben wird, erstellt die Funktion eine Assertion im Debugmodus und ruft den Handler auf, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, gibt die Funktion -1 zurück und legt ihn fest. EINVALzu errno

Anforderungen

Routine

Erforderlicher Header

Optionaler Header

_open

<io.h>

<fcntl.h> und <sys/types.h> <sys/stat.h>

_wopen

<io.h> oder <wchar.h>

<fcntl.h> und <sys/types.h> <sys/stat.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Bibliotheken

Alle Versionen Cs.

Beispiel

// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
 * named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
 * for output. The files are then closed.
 */
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>

int main( void )
{
   int fh1, fh2;

   fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
   // Note: _open is deprecated; consider using _sopen_s instead
   if( fh1 == -1 )
      perror( "Open failed on input file" );
   else
   {
      printf( "Open succeeded on input file\n" );
      _close( fh1 );
   }

   fh2 = _open( "CRT_OPEN.OUT", _O_WRONLY | _O_CREAT, _S_IREAD | 
                            _S_IWRITE ); // C4996
   if( fh2 == -1 )
      perror( "Open failed on output file" );
   else
   {
      printf( "Open succeeded on output file\n" );
      _close( fh2 );
   }
}

Output

Open succeeded on input file
Open succeeded on output file

.NET Framework-Entsprechung

Siehe auch

Referenz

E/A auf niedriger Ebene

_chmod, _wchmod

_close

_create, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen