Udostępnij za pośrednictwem


_sopen_s, _wsopen_s

Otwiera plik do udostępniania.Są to wersje _sopen i _wsopen z rozszerzeń zabezpieczeń opisane 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

  • [out]pfh
    Dojście do pliku lub -1, w przypadku wystąpienia błędu.

  • [w]filename
    Nazwa pliku.

  • [w]oflag
    Typ operacji dozwolone.

  • [w]shflag
    Typ udostępnianie dozwolone.

  • [w]pmode
    Ustawienie uprawnienia.

Wartość zwracana

Zwracana wartość różną od zera wskazuje na błąd, w którym to przypadku errno jest ustawiona na jeden z następujących wartości.

  • EACCES
    Ścieżka jest katalogu, lub plik jest tylko do odczytu, ale dokonano próby operacji otwartego na piśmie.

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

  • EINVAL
    Invalid oflag, shflag, orpmode argument, or pfh or filename was a null pointer.

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

  • ENOENT
    Plik lub nie odnaleziono ścieżki.

Jeżeli nieprawidłowy argument jest przekazywany do funkcji, nieprawidłowy parametr wywoływana jest funkcja obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie jest dozwolone, aby kontynuować, errno jest ustawiona na EINVAL i EINVAL jest zwracany.

Aby uzyskać więcej informacji na temat tych i innych kodów powrotu, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.

W przypadku błędu, -1 będzie zwracana poprzez pfh (chyba że pfh jest wskaźnik null).

Uwagi

_sopen_s Funkcja otwiera w pliku określonym przez filename i przygotowuje plik do udostępnionego czytania lub pisania, zgodnie z definicją oflag i shflag._wsopen_sjest to wersja szerokich znaków _sopen_s; filename argument _wsopen_s jest łańcuch szerokich znaków._wsopen_si _sopen_s zachowują się identycznie inaczej.

Tekst rodzajowy rutynowych mapowania

Procedura TCHAR.h

_UNICODE i _MBCS nie zdefiniowane

_MBCS, definicja

_UNICODE, definicja

_tsopen_s

_sopen_s

_sopen_s

_wsopen_s

Wyrażenie liczby całkowitej oflag jest utworzona przez łączenie jednego lub więcej stałych manifestu, zdefiniowane w pliku Fcntl.h.Kiedy dwa lub więcej stałych tworzą argument oflag, są one połączone z (operatory OR, operator | ).

  • _O_APPEND
    Zmiana wskaźnika pliku na końcu pliku przed wykonaniem każdej operacji zapisu.

  • _O_BINARY
    Otwiera plik w trybie binarnym (nieprzetłumaczony).(Zobacz fopen opis tryb binarny.)

  • _O_CREAT
    Tworzy i otwiera nowy plik do zapisu.Jest ignorowany, jeżeli plik określony przez filename istnieje.

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

  • _O_CREAT| _O_TEMPORARY
    Utwórz plik jako tymczasowe; plik zostanie usunięty podczas ostatniej deskryptor pliku jest zamknięty.

  • _O_CREAT| _O_EXCL
    Zwraca wartość błędu, jeżeli plik określony przez filename istnieje.Stosuje się tylko wtedy, gdy używana z _O_CREAT.

  • _O_NOINHERIT
    Uniemożliwia tworzenie deskryptora udostępnionego pliku.

  • _O_RANDOM
    Określa przede wszystkim na dostępie z dysku.

  • _O_RDONLY
    Otwiera plik do odczytu tylko; nie można określić z _O_RDWR lub _O_WRONLY.

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

  • _O_SEQUENTIAL
    Określa przede wszystkim dostęp sekwencyjny z dysku.

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

  • _O_TRUNC
    Otwiera plik i obcina to zero długości; Plik musi mieć uprawnienie do zapisu.Nie można określić tej flagi z _O_RDONLY._O_TRUNC używane z _O_CREAT otwarcie istniejącego pliku lub tworzy nowy plik.

    [!UWAGA]

    _O_TRUNC Flaga niszczy zawartość określonego pliku.

  • _O_WRONLY
    Otwiera plik do zapisu tylko; nie można określić z _O_RDONLY lub _O_RDWR.

  • _O_U16TEXT
    Otwórz plik w trybie Unicode UTF-16.

  • _O_U8TEXT
    Otwórz plik w trybie Unicode UTF-8.

  • _O_WTEXT
    Otwórz 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 _sopen_s jest wywoływana z _O_WRONLY|_O_APPEND (tryb dołączania) i _O_WTEXT, _O_U16TEXT, lub _O_U8TEXT, go najpierw spróbować otworzyć plik do odczytu i zapisu, przeczytaj BOM, a następnie otwórz go ponownie do pisania tylko.Jeśli otwarcie pliku do odczytu i zapisu ulegnie awarii, będzie otworzyć plik do zapisu tylko i użyć wartości domyślne ustawienie trybu Unicode.

Argument shflag jest wyrażenie stałe, składający się z jednej z następujących stałych manifestu, określonych w Share.h.

  • _SH_DENYRW
    Uprawnienie Odczyt i zapis do pliku.

  • _SH_DENYWR
    Uprawnienie do zapisu w pliku.

  • _SH_DENYRD
    Uprawnienie do odczytu pliku.

  • _SH_DENYNO
    Zezwolenia na uprawnienia odczytu i zapisu.

pmode Argumentu jest wymagane, w odróżnieniu od zawsze _sopen.Podczas określania _O_CREAT, jeśli plik nie istnieje, pmode określa ustawienia uprawnień plików, które są ustawiane podczas nowy plik zostanie zamknięty po raz pierwszy.W przeciwnym razie pmode jest ignorowana.pmodeWyrażenie liczby całkowitej, zawierający jedną lub obie z manifestu stałych jest _S_IWRITE i _S_IREAD, określonych w SYS\Stat.h.Podano zarówno stałych, są połączone z operatorem logiczną lub.Znaczenie pmode jest w następujący sposób.

  • _S_IWRITE
    Dozwolone pisania.

  • _S_IREAD
    Dozwolone czytania.

  • _S_IREAD | _S_IWRITE
    Czytanie i pisanie dozwolone.

Jeśli uprawnienie do zapisu nie jest podany, plik jest tylko do odczytu.W systemie operacyjnym Windows wszystkie pliki są czytelne; nie jest możliwe nadać uprawnienia tylko do zapisu.W ten sposób, tryby _S_IWRITE i _S_IREAD | _S_IWRITE są równoważne.

_sopen_sstosuje się bieżącą maskę uprawnień do pliku, aby pmode przed ustawieniem uprawnienia (zobacz _umask).

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

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>

Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.

Przykład

Zobacz przykład dla _locking.

Zobacz też

Informacje

Niskiego poziomu we/wy

_close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen