Udostępnij za pośrednictwem


_sopen_s, _wsopen_s

Otwiera plik do udostępniania.Te wersje _sopen i _wsopen ma rozszerzenia zabezpieczeń, zgodnie z opisem w Funkcje zabezpieczeń w CRT.

errno_t _sopen_s(
   int* pfh,
   const char *filename,
   int oflag,
   int shflag,
   int pmode
);
errno_t _wsopen_s(
   int* pfh,
   const wchar_t *filename,
   int oflag,
   int shflag,
   int pmode,
);

Parametry

  • [limit] pfh
    Dojście do pliku, lub wartość -1 w przypadku błędu.

  • [w] filename
    Nazwa pliku.

  • [w] oflag
    Rodzaj operacji dozwolone.

  • [w] shflag
    Rodzaj udostępnianie dozwolone.

  • [w] pmode
    Ustawienia uprawnień.

Wartość zwracana

Niezerowe wartości zwracanej wskazuje błąd; w takim przypadku errno jest ustawiona na jedną 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_CREAT i _O_EXCL określono flagi, ale filename już istnieje.

  • EINVAL
    Nieprawidłowy oflag, shflag, lub pmode argument, lub pfh lub filename został wskaźnik wartości null.

  • EMFILE
    Nie jednego pliku deskryptory dostępne.

  • ENOENT
    Plik lub nie można odnaleźć ścieżki.

Jeśli nieprawidłowy argument został przekazany do funkcji, program obsługi nieprawidłowy parametr zostanie wywołany, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli jest dozwolone wykonywanie, aby kontynuować, errno ma ustawioną wartość EINVAL i EINVAL jest zwracana.

Aby uzyskać więcej informacji na temat tych i innych kody powrotne, zobacz errno, _doserrno, _sys_errlist, and _sys_nerr.

W przypadku błędu, zwracana jest wartość -1, za pomocą pfh (o ile nie pfh wskaźnik null).

Uwagi

_sopen_s Funkcji otwiera plik określony przez filename i przygotowuje pliku do udostępnionego Odczyt lub zapis, zgodnie z definicją przez oflag i shflag._wsopen_s to wersja całego znaku _sopen_s; filename argument _wsopen_s jest ciągiem znaków sieci._wsopen_s i _sopen_s działa tak samo, w przeciwnym razie.

Mapowania procedur zwykłego tekstu

Procedury Tchar.h

_UNICODE i _MBCS niezdefiniowane

_MBCS zdefiniowano

_UNICODE zdefiniowano

_tsopen_s

_sopen_s

_sopen_s

_wsopen_s

Wyrażenie liczby całkowitej oflag jest tworzony przez połączenie co najmniej jeden 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.

  • _O_CREAT | _O_SHORT_LIVED
    Tworzy plik jako tymczasowe i jeśli jest to możliwe nie opróżnia na dysk.

  • _O_CREAT | _O_TEMPORARY
    Tworzy plik jako tymczasowe; plik zostanie usunięty po zamknięciu ostatnich deskryptor pliku.

  • _O_CREAT | _O_EXCL
    Zwraca wartość błędu, jeśli plik określony przez 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_TRUNC uż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ć albo _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.

Jeśli _sopen_s jest wywoływana z _O_WRONLY | _O_APPEND (Dołącz tryb) i _O_WTEXT, _O_U16TEXT, lub _O_U8TEXT, najpierw próbuje otworzyć pliku do odczytu i zapisu, odczytać BOM, a następnie otwórz go ponownie w celu zapisywania tylko.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 stałego wyrażenia, które składa się z jednej 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 zawsze wymagane, w odróżnieniu od w _sopen.Po określeniu _O_CREAT, 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.pmode Wyraż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.

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

Wymagania

Procedura

Wymagany nagłówek

Opcjonalne nagłówka

_sopen_s

< io.h >

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

_wsopen_s

< io.h > lub < wchar.h >

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

_sopen_s i _wsopen_s są rozszerzenia firmy Microsoft.Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

Zobacz przykład dla _locking.

Zobacz też

Informacje

We/Wy niskiego poziomu

_close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen