_sopen, _wsopen

Öffnet eine Datei für das Freigeben.Sicherere Versionen dieser Funktionen sind verfügbar. Weitere Informationen 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
    Art der Vorgänge ermöglicht.

  • shflag
    Der Typ der Freigabe zulässig.

  • pmode
    Einstellung für Berechtigungen.

Rückgabewert

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

Wenn filenameNULLoflag oder ein Zeiger ist oder wenn oflag oder shflag nicht innerhalb eines gültigen Wertebereichs liegt, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, geben diese Funktionen und -1 festlegen errno auf einen der folgenden Werte zurück.

  • EACCES
    Der angegebene Pfad ist ein Verzeichnis, oder die Datei ist schreibgeschützt, aber ein Vorgang wurde versucht OPEN-für Schreiben.

  • EEXIST
    _O_CREAT und _O_EXCL-Flags angegeben wurden, aber filename ist bereits vorhanden.

  • EINVAL
    Ungültiges oflag oder shflag-Argument.

  • EMFILE
    Nicht mehr Dateideskriptoren 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 _sopen-Funktion öffnet die Datei, die von filename angegeben wird, und bereitet die Datei für freigegebene Lesen oder Schreiben vor, wie durch oflag und shflagdefiniert._wsopen ist eine Breitzeichen-Version von _sopen. filename das Argument zu _wsopen ist eine Zeichenfolge mit Breitzeichen._wsopen und _sopen verhalten sich ansonsten unterscheiden.

Zuweisung generischer Textroutinen

Tchar.h-Routine

_UNICODE als auch _MBCS nicht definiert

_MBCS definieren

_UNICODE definiert

_tsopen

_sopen

_sopen

_wsopen

Der ganzzahlige Ausdruck oflag wird gebildet, indem eine oder mehrere der folgenden Manifesten Konstanten kombiniert, definiert in der Datei Fcntl.h.Wenn zwei oder mehr Konstanten das Argument oflagbilden, werden sie mit dem bitweisen Operator OR kombiniert ( | ).

  • _O_APPEND
    Ordnet einen Dateizeiger am Ende der Datei vor jedem Schreibvorgang an.

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

  • _O_CREAT
    Erstellt und öffnet neue Datei zum Schreiben.Hat keine Auswirkungen, wenn die Datei, die von filename angegeben wird, vorhanden ist.Das 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.Das 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.Das pmode-Argument ist erforderlich, wenn _O_CREAT angegeben wird.

  • _O_CREAT| _O_EXCL
    Gibt einen Fehlerwert zurück, wenn eine 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 insbesondere direkt 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. darf nicht mit _O_RDONLY oder _O_WRONLYangegeben werden.

  • _O_SEQUENTIAL
    Gibt die hauptsächlich sequenziellen 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 eine 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 _sopen 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.

Das Argument shflag ist ein konstanter Ausdruck das Bestehen der folgenden Manifesten Konstanten, definiert in Share.h.

  • _SH_DENYRW
    Verweigert Lese- und Schreibzugriff auf eine Datei.

  • _SH_DENYWR
    Verweigert den Schreibzugriff auf eine Datei.

  • _SH_DENYRD
    Verweigert den Lesezugriff auf eine Datei.

  • _SH_DENYNO
    Lässt Lese- und Schreibzugriff.

Das pmode-Argument ist nur erforderlich, wenn _O_CREATangibt.Wenn die Datei nicht vorhanden ist, 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 _S_IWRITE Konstanten Manifesten und _S_IREADenthält, definiert in Stat.h \ SYS.Wenn beide Konstanten angegeben sind, werden sie mit dem bitweisen Operator OR kombiniert.Die Bedeutung von pmode lautet wie folgt.

  • _S_IWRITE
    Schreiben zulässig.

  • _S_IREAD
    Lesevorgänge zulässig.

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

Wenn die Schreibberechtigung nicht angegeben ist, ist die Datei schreibgeschützt.Klicken Sie unter dem Windows-Betriebssystem sind alle Dateien gelesen werden. Es ist nicht möglich, lesegeschützte Berechtigung zu gewähren.Daher sind die Modi _S_IWRITE und _S_IREAD | _S_IWRITE .

_sopen wendet die aktuelle Dateiberechtigungsmaske zu pmode , bevor die Berechtigungen festgelegt werden sollen (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 finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Beispiel

Weitere Informationen finden Sie im Beispiel für _locking.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

E/A auf niedriger Ebene

_close

_create, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen