Freigeben über


_sopen, _wsopen

Öffnet eine Datei zur Freigabe. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter _sopen_s, _wsopen_s.

int _sopen(    const char *filename,    int oflag,    int shflag [,    int pmode ]  ); int _wsopen(    const wchar_t *filename,    int oflag,    int shflag [,    int pmode ]  );

Parameter

  • filename
    Dateiname

  • oflag
    Die zulässige Art von Vorgängen.

  • shflag
    Die zulässige Freigabeart.

  • pmode
    Berechtigungseinstellung.

Rückgabewert

Jede dieser Funktionen gibt einen Dateideskriptor für die geöffnete Datei zurück.

Wenn filename oder oflag ein NULL-Zeiger ist oder wenn oflag oder shflag nicht innerhalb eines gültigen Bereichs von Werten liegt, wird der Handler für ungültige Parameter aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen –1 zurück und setzen errno auf einen der folgenden Werte.

  • EACCES
    Der angegebene Pfad ist ein Verzeichnis, oder die Datei ist schreibgeschützt, aber es wurde versucht, sie zum Schreiben zu öffnen.

  • EEXIST
    Die Flags _O_CREAT und _O_EXCL wurden angegeben, filename existiert jedoch bereits.

  • EINVAL
    Ungültiges oflag- oder shflag-Argument.

  • EMFILE
    Es sind keine Dateideskriptoren mehr verfügbar.

  • ENOENT
    Datei oder Pfad nicht gefunden.

Weitere Informationen zu diesen und anderen Rückgabecodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die Funktion _sopen öffnet die durch filename angegebene Datei und bereitet sie zur Lese- oder Schreibfreigabe vor, wie in oflag und shflag definiert. _wsopen ist eine Breitzeichenversion von _sopen. Das filename-Argument für _wsopen ist eine Breitzeichenfolge. _wsopen und _sopen verhalten sich andernfalls identisch.

Zuordnung generischer Textroutinen

Tchar.h-Routine

_UNICODE und _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_tsopen

_sopen

_sopen

_wsopen

Der ganzzahlige Ausdruck oflag wird durch Kombination einer oder mehrerer der folgenden Manifestkonstanten gebildet, die in <fcntl.h> definiert werden. Wenn zwei oder mehr Konstanten das Argument oflag bilden, werden sie mit dem bitweisen OR-Operator ( |) kombiniert.

  • _O_APPEND
    Positioniert einen Dateizeiger vor jedem Schreibvorgang am Ende einer Datei.

  • _O_BINARY
    Öffnet eine Datei im binären (unübersetzten) Modus. (Eine Beschreibung des binären Modus finden Sie unter fopen.)

  • _O_CREAT
    Erstellt eine Datei und öffnet sie zum Schreiben. Hat keine Auswirkung, wenn die durch filename angegebene Datei existiert. Das Argument pmode ist erforderlich, wenn _O_CREAT angegeben wird.

  • _O_CREAT | _O_SHORT_LIVED
    Erstellt eine temporäre Datei und leert sie, wenn möglich, nicht auf die Festplatte. Das Argument pmode ist erforderlich, wenn _O_CREAT angegeben wird.

  • _O_CREAT | _O_TEMPORARY
    Erstellt eine temporäre Datei. Die Datei wird gelöscht, wenn der letzte Dateideskriptor geschlossen wird. Das Argument pmode ist erforderlich, wenn _O_CREAT angegeben wird.

  • _O_CREAT | _O_EXCL
    Gibt einen Fehlerwert zurück, wenn eine durch filename angegebene Datei existiert. Gilt nur in Verwendung mit _O_CREAT.

  • _O_NOINHERIT
    Verhindert die Erstellung eines freigegebenen Dateideskriptors.

  • _O_RANDOM
    Legt primär den direkten Zugriff von der Festplatte fest.

  • _O_RDONLY
    Öffnet eine Datei nur zum Lesen. Kann nicht mit _O_RDWR oder _O_WRONLY angegeben werden.

  • _O_RDWR
    Öffnet eine Datei zum Lesen und zum Schreiben. Kann nicht mit _O_RDONLY oder _O_WRONLY angegeben werden.

  • _O_SEQUENTIAL
    Legt primär den sequenziellen Zugriff von der Festplatte fest.

  • _O_TEXT
    Öffnet eine Datei im Textmodus (übersetzt). (Weitere Informationen erhalten Sie unter Text- und Binärmodus-Datei-E/A und fopen.)

  • _O_TRUNC
    Öffnet eine Datei und verkürzt sie auf die Länge Null. Für die Datei muss Schreibberechtigung bestehen. Kann nicht mit _O_RDONLY angegeben werden. _O_TRUNC in Kombination mit _O_CREAT öffnet eine existierende Datei oder erstellt eine Datei.

    Hinweis

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

  • _O_WRONLY
    Öffnet eine Datei nur zum Schreiben. Kann nicht mit _O_RDONLY oder _O_RDWR angegeben werden.

  • _O_U16TEXT
    Öffnet eine Datei im Unicode-UTF-16-Modus.

  • _O_U8TEXT
    Öffnet eine Datei im Unicode-UTF-8-Modus.

  • _O_WTEXT
    Öffnet eine Datei im Unicode-Modus.

Um den Datenzugriffsmodus festzulegen, müssen Sie entweder _O_RDONLY, _O_RDWR oder _O_WRONLY festlegen. Es existiert kein Standardwert für den Zugriffsmodus.

Wenn eine Datei mit _O_WTEXT, _O_U8TEXT oder _O_U16TEXT im Unicode-Modus geöffnet wird, übersetzen die Eingabefunktionen die aus der Datei gelesenen Daten in UTF-16-Daten, die als Datentyp wchar_t gespeichert werden. Funktionen, die in eine im Unicode-Modus geöffnete Datei schreiben, erwarten Puffer, die UTF-16-Daten, die als Datentyp wchar_t gespeichert sind. Wenn eine Datei als UTF-8 kodiert ist, dann werden UTF-16-Daten beim Schreiben in UTF-8 übersetzt, und die UTF-8-kodierten Inhalte der Datei werden beim Lesen in UTF-16 übersetzt. Der Versuch, in diesem Modus eine ungerade Anzahl von Bytes in Unicode zu lesen oder zu schreiben, führt zu einem Parametervalidierungsfehler. Wenn Sie Daten lesen oder schreiben möchten, die in Ihrem Programm als UTF-8 gespeichert sind, verwenden Sie den Text- oder Binärdateienmodus anstelle eines Unicode-Modus. Sie sind für jede erforderliche Kodierungsübersetzung verantwortlich.

Wenn _sopen mit _O_WRONLY | _O_APPEND (Anfügemodus) und _O_WTEXT,_O_U16TEXT oder _O_U8TEXT aufgerufen wird, versucht sie zuerst, die Datei zum Lesen und Schreiben zu öffnen, und dann, die BOM zu lesen und die Datei erneut, jedoch nur zum Schreiben, zu öffnen. Wenn das Öffnen einer Datei zum Lesen und Schreiben fehlschlägt, wird die Datei nur zum Schreiben geöffnet, und für die Einstellung des Unicode-Modus wird der Standardwert verwendet.

Das Argument shflag ist ein konstanter Ausdruck, der aus einer der folgenden Manifestkonstanten besteht, die in <share.h> definiert sind.

  • _SH_DENYRW
    Verweigert den Lese- und Schreibzugriff auf eine Datei.

  • _SH_DENYWR
    Verweigert den Schreibzugriff auf eine Datei.

  • _SH_DENYRD
    Verweigert den Lesezugriff auf eine Datei.

  • _SH_DENYNO
    Erlaubt Lese- und Schreibzugriff.

Das Argument pmode ist nur erforderlich, wenn _O_CREAT angegeben wird. Wenn die Datei nicht existiert, gibt pmode die Berechtigungseinstellungen der Datei an, die festgelegt werden, wenn die neue Datei zum ersten Mal geschlossen wird. Andernfalls wird pmode ignoriert. pmode ist ein ganzzahliger Ausdruck, der eine oder beide der Manifestkonstanten _S_IWRITE und _S_IREAD enthält, die in <sys\stat.h> definiert sind. Wenn beide Konstanten verwendet werden, werden sie mithilfe des bitweisen OR-Operators kombiniert. pmode hat folgende Bedeutung:

  • _S_IWRITE
    Schreiben erlaubt.

  • _S_IREAD
    Lesen erlaubt.

  • _S_IREAD | _S_IWRITE
    Lesen und Schreiben erlaubt.

Wenn keine Schreibberechtigung gewährt wird, kann die Datei nur gelesen werden. Im Windows-Betriebssystem sind alle Dateien lesbar. Es ist nicht möglich, nur Schreibberechtigungen zu vergeben. Deshalb sind die Modi _S_IWRITE und _S_IREAD | _S_IWRITE gleichwertig.

_sopen wendet die aktuelle Dateiberechtigungsmaske auf pmode an, bevor die Berechtigungen festgelegt werden. (Siehe _umask.)

Anforderungen

Routine

Erforderlicher Header

Optionaler Header

_sopen

<io.h>

<fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h>

_wsopen

<io.h> oder <wchar.h>

<fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Siehe das Beispiel für _locking.

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

E/A auf niedriger Ebene

_close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen