Udostępnij za pośrednictwem


_sopen, _wsopen

Otwiera plik do udostępniania.Bezpieczniejsze wersje te funkcje są dostępne — zobacz _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 ]  );

Parametry

  • filename
    Nazwa pliku.

  • oflag
    Rodzaj operacji dozwolone.

  • shflag
    Rodzaj udostępnianie dozwolone.

  • pmode
    Ustawienia uprawnień.

Wartość zwracana

Każda z tych funkcji zwraca deskryptor pliku otwartego pliku.

Jeśli filename lub oflag jest NULL wskaźnik, lub, jeśli oflag lub shflag jest nie prawidłowego zakresu wartości, program obsługi nieprawidłowy parametr zostanie wywołany, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli jest dozwolone wykonywanie aby kontynuować, funkcje zwracają wartość -1 i ustawić errno do jednej z następujących wartości.

  • EACCES
    Podana ścieżka jest katalogiem, lub plik jest tylko do odczytu, ale próbowano wykonać operację open do pisania.

  • EEXIST
    _O_CREATi _O_EXCL określono flagi, ale filename już istnieje.

  • EINVAL
    Nieprawidłowy oflag lub shflag argumentu.

  • EMFILE
    Nie więcej deskryptorów plików są dostępne.

  • ENOENT
    Nie znaleziono pliku lub ścieżkę.

Aby uzyskać więcej informacji na temat tych i innych kody powrotne, zobacz _doserrno, numer błędu, _sys_errlist i _sys_nerr.

Uwagi

_sopen Funkcji otwiera plik określony przez filename i przygotowuje pliku do udostępnionego Odczyt lub zapis, zgodnie z definicją przez oflag i shflag._wsopento wersja całego znaku _sopen; filename argument _wsopen jest ciągiem znaków sieci._wsopen i _sopen zachowują się identycznie w innych przypadkach.

Mapowania procedur zwykłego tekstu

Procedura tchar.h

_UNICODE i _MBCS niezdefiniowane

_MBCS zdefiniowano

_UNICODE zdefiniowano

_tsopen

_sopen

_sopen

_wsopen

Wyrażenie liczby całkowitej oflag jest tworzony przez połączenie jedną lub więcej z następujących stałych manifestu, które są definiowane w < fcntl.h >.Jeśli co najmniej dwa stałe tworzą argument oflag, są połączone z (operator bitowe lub| ).

  • _O_APPEND
    Powoduje przeniesienie pliku wskaźnik do końca pliku przed każdej operacji zapisu.

  • _O_BINARY
    Otwiera plik w trybie binarnym (niezrozumiały).(Zobacz fopen opis binarnym.)

  • _O_CREAT
    Tworzy plik i otwiera go do zapisu.Ustawienie nie działa, jeśli plik określony przez filename istnieje.pmode Argumentu jest wymagany, gdy _O_CREAT jest określony.

  • _O_CREAT | _O_SHORT_LIVED
    Tworzy plik jako tymczasowe i jeśli jest to możliwe nie opróżnia na dysk.pmode Argumentu jest wymagany, gdy _O_CREAT jest określony.

  • _O_CREAT | _O_TEMPORARY
    Tworzy plik jako tymczasowe; plik zostanie usunięty po zamknięciu ostatnich deskryptor pliku.pmode Argumentu jest wymagany, gdy _O_CREAT jest określony.

  • _O_CREAT | _O_EXCL
    Zwraca wartość błędu, jeśli określone przez plik filename istnieje.Ma zastosowanie tylko w przypadku użycia z _O_CREAT.

  • _O_NOINHERIT
    Uniemożliwia tworzenie deskryptor udostępniony plik.

  • _O_RANDOM
    Określa głównie RAM z dysku.

  • _O_RDONLY
    Otwiera plik tylko odczytywania.Nie można określić z _O_RDWR lub _O_WRONLY.

  • _O_RDWR
    Otwiera plik zarówno odczytu i zapisu.Nie można określić z _O_RDONLY lub _O_WRONLY.

  • _O_SEQUENTIAL
    Określa głównie sekwencyjne dostęp z dysku.

  • _O_TEXT
    Otwiera plik w trybie tekstowym (translacji).(Aby uzyskać więcej informacji, zobacz tekstu i binarny tryb operacji We/Wy i fopen.)

  • _O_TRUNC
    Otwiera plik i obcina go do zera długości; Plik musi mieć uprawnienia do zapisu.Nie można określić z _O_RDONLY._O_TRUNCużywane z _O_CREAT otwiera istniejący plik lub tworzy plik.

    [!UWAGA]

    _O_TRUNC Flaga zniszczy zawartość określonego pliku.

  • _O_WRONLY
    Otwiera plik do zapisywania tylko.Nie można określić z _O_RDONLY lub _O_RDWR.

  • _O_U16TEXT
    Otwiera plik w trybie Unicode UTF-16.

  • _O_U8TEXT
    Otwiera plik w trybie Unicode UTF-8.

  • _O_WTEXT
    Otwiera plik w trybie Unicode.

Aby określić tryb dostępu do pliku, należy określić jedną _O_RDONLY, _O_RDWR, lub _O_WRONLY.Nie istnieje wartość domyślną dla trybu dostępu.

Jeśli plik jest otwarty w trybie Unicode za pomocą _O_WTEXT, _O_U8TEXT, lub _O_U16TEXT, input funkcji tłumaczenia danych, który jest odczytywany z pliku na UTF-16 dane przechowywane jako typ wchar_t.Funkcje, które zapisu w pliku otworzyć w trybie Unicode oczekuje buforów, które zawierają dane UTF-16 przechowywane jako typ wchar_t.Jeśli plik jest zakodowane jako UTF-8, UTF-16 danych jest przetłumaczyć na UTF-8, gdy jest ona zapisywana i zawartości algorytmem UTF-8 jest przetłumaczyć UTF-16 została przeczytana.Podjęto próbę odczytu lub zapisu nieparzysta liczba bajtów w trybie Unicode powoduje błąd sprawdzania poprawności parametru.Do odczytu lub zapisu danych przechowywanych w swoim programie jako UTF-8, zamiast tekstowe lub binarne tryb pliku trybu Unicode.Użytkownik jest odpowiedzialny za wszelkie wymagane tłumaczenia kodowania.

If _sopen is called with _O_WRONLY | _O_APPEND (append mode) and _O_WTEXT, _O_U16TEXT, or _O_U8TEXT, it first tries to open the file for reading and writing, read the BOM, then reopen it for writing only.W przypadku otwierania pliku do odczytu i zapisu nie powiodło się, otwiera plik do zapisywania tylko i jest używana wartość domyślna dla ustawienia trybu Unicode.

Argument shflag jest wyrażenia stałego składający się z jednego z następujących stałych manifestu, które są definiowane w < share.h >.

  • _SH_DENYRW
    Uprawnienie odczytu i zapisu do pliku.

  • _SH_DENYWR
    Uprawnienie do zapisu w pliku.

  • _SH_DENYRD
    Uprawnienie do odczytu pliku.

  • _SH_DENYNO
    Zezwolenia na do odczytu i zapisu.

pmode Argument jest wymagany tylko wtedy, gdy _O_CREAT jest określony.Jeśli plik nie istnieje, pmode określa ustawienia uprawnień plików, które są ustawiane podczas nowy plik musi być zamknięty po raz pierwszy.W przeciwnym razie pmode jest ignorowana.pmodeWyrażenie liczby całkowitej zawierający jedną lub obie stałych manifestu jest _S_IWRITE i _S_IREAD, które są definiowane w < sys\stat.h >.Jeśli podana jest zarówno stałych, są połączone z operatorem logiczną lub.Znaczenie pmode jest w następujący sposób.

  • _S_IWRITE
    Zapisywanie dozwolone.

  • _S_IREAD
    Odczytywanie dozwolone.

  • _S_IREAD | _S_IWRITE
    Dozwolone odczytu i zapisu.

Jeśli nie podano uprawnień do zapisu, plik jest tylko do odczytu.W systemie operacyjnym Windows wszystkie pliki były czytelne; nie jest możliwe udziel tylko do zapisu.W związku z tym, tryby _S_IWRITE i _S_IREAD | _S_IWRITE są równoważne.

_sopenstosuje bieżącą maskę uprawnień pliku do pmode przed uprawnienia zostały ustawione.(Zobacz _umask.)

Wymagania

Procedura

Wymagany nagłówek

Opcjonalne nagłówka

_sopen

< io.h >

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

_wsopen

< io.h > lub < wchar.h >

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

Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność.

Przykład

Zobacz przykład dla _locking.

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołań platformy.

Zobacz też

Informacje

We/Wy niskiego poziomu

_close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen