_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.