_sopen_s, _wsopen_s
Otevře soubor pro sdílení.Tyto verze _sopen a _wsopen mají vylepšení zabezpečení, jak je popsáno v Funkce zabezpečení v 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
Popisovač souboru nebo -1, v případě chyby.[v] filename
Název souboru.[v] oflag
Druh operace, které jsou povoleny.[v] shflag
Druh sdílení povoleny.[v] pmode
Nastavení oprávnění.
Vrácená hodnota
Nenulovou návratovou hodnotu označuje chybu; v takovém případě errno nastaven na jednu z následujících hodnot.
EACCES
Zadaná cesta je adresář, nebo soubor je jen pro čtení, ale došlo k pokusu o operaci otevřít pro zápis.EEXIST
_O_CREAT a _O_EXCL příznaky nebyly zadány, ale filename již existuje.EINVAL
Neplatný oflag, shflag, nebo pmode argument, nebo pfh nebo filename byl ukazatel s hodnotou null.EMFILE
K dispozici žádné další popisovače souboru.ENOENT
Soubor nebo cesta nebyla nalezena.
Pokud je neplatný argument předaný funkci, neplatný parametr obslužná rutina je vyvolána, jak je popsáno v Ověření parametru.Pokud chcete-li pokračovat, je povoleno zpracování errno je nastavena na EINVAL a EINVAL je vrácena.
Další informace o těchto a dalších návratové kódy naleznete v tématu errno, _doserrno, _sys_errlist, and _sys_nerr.
V případě chyba, je vrácena -1 až pfh (není-li pfh je ukazatel s hodnotou null).
Poznámky
_sopen_s Funkce otevře do souboru určeného parametrem filename a připraví soubor pro sdílené čtení nebo zápisu, definované v oflag a shflag._wsopen_s je verze širokého znaku _sopen_s; filename argumentu _wsopen_s obsahuje řetězec širokého znaku._wsopen_s a _sopen_s chovat stejně jako v opačném případě.
Mapování rutin obecného textu
Rutina Tchar.h |
_UNICODE a _MBCS nejsou definovány. |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tsopen_s |
_sopen_s |
_sopen_s |
_wsopen_s |
Celé číslo výraz oflag je tvořen kombinací jeden nebo více manifestu konstanty, které jsou definovány v < fcntl.h >.Pokud dvě nebo více konstanty form argument oflag, jsou kombinovány s na operátor bitová OR ()| ).
_O_APPEND
Přemístí ukazatel souboru na konec souboru před všechny operace zápisu._O_BINARY
Otevře soubor v binárním režimu (nepřeložený).(Viz fopen popis binární režim.)_O_CREAT
Vytvoří soubor a otevře ji pro zápis.Akce nemá vliv, pokud soubor určený parametrem filename existuje._O_CREAT | _O_SHORT_LIVED
Vytvoří soubor jako dočasné a pokud je to možné není vyprázdnit na disk._O_CREAT | _O_TEMPORARY
Vytvoří soubor jako dočasné; soubor je odstraněn při zavření poslední popisovač souboru._O_CREAT | _O_EXCL
Vrátí chybovou hodnotu, pokud soubor určený parametrem filename existuje.Použije pouze při použití s _O_CREAT._O_NOINHERIT
Brání vytvoření sdílený soubor deskriptoru._O_RANDOM
Určuje především náhodný přístup z disku._O_RDONLY
Otevře soubor jen pro čtení.Nelze zadat s _O_RDWR nebo _O_WRONLY._O_RDWR
Otevře soubor pro čtení i zápisu.Nelze zadat s _O_RDONLY nebo _O_WRONLY._O_SEQUENTIAL
Určuje především sekvenční přístup z disku._O_TEXT
Otevře soubor v režimu textu (přeložit).(Další informace naleznete v tématu Text a vstupně-výstupní soubor binární režim a fopen.)_O_TRUNC
Otevře soubor a oříznut na nulu délku; soubor musí mít oprávnění k zápisu.Nelze zadat s _O_RDONLY._O_TRUNC použít s _O_CREAT Otevře existující soubor nebo vytvoří soubor.[!POZNÁMKA]
_O_TRUNC Příznak ničí obsah zadaného souboru.
_O_WRONLY
Otevře soubor pro zápis pouze.Nelze zadat s _O_RDONLY nebo _O_RDWR._O_U16TEXT
Otevře soubor v režimu Unicode UTF-16._O_U8TEXT
Otevře soubor v režimu Unicode UTF-8._O_WTEXT
Otevře soubor v režimu Unicode.
Chcete-li určit režim přístup k souboru, je nutné zadat buď _O_RDONLY, _O_RDWR, nebo _O_WRONLY.Není k dispozici žádná výchozí hodnota pro režim přístupu.
Při otevření souboru v režimu Unicode pomocí _O_WTEXT, _O_U8TEXT, nebo _O_U16TEXT, vstupní funkce převedení dat, který je načítán ze souboru do UTF-16 data uložená jako typ wchar_t.Funkce, které zápis do souboru otevřít v režimu Unicode očekávané vyrovnávací paměti, které obsahují UTF-16 data uložená jako typ wchar_t.Pokud soubor s kódováním jako UTF-8 je Jakmile je zapsán a obsah kódovaný UTF-8 v souboru je přeložit na UTF-16, pokud je pro čtení dat UTF-16 přeložit na UTF-8.Pokus o čtení nebo zápis lichý počet bajtů v režimu Unicode způsobí, že chyba ověření parametru.Při čtení nebo zápisu dat, který je uložen ve svém programu jako UTF-8, použijte namísto režimu Unicode režim text nebo binární soubor.Zodpovídáte za jakékoli požadované kódování překladu.
Pokud _sopen_s je volána s _O_WRONLY | _O_APPEND (připojit režimu) a _O_WTEXT, _O_U16TEXT, nebo _O_U8TEXT, nejprve se pokusí otevřít soubor pro čtení a zápis, přečtěte si Kusovníku a pak znovu otevřete pro zápis pouze.Pokud otevírání souboru pro čtení a zápis nezdaří, otevře soubor pro zápis pouze a použije výchozí hodnotu pro nastavení režimu Unicode.
Argument shflag je konstantní výraz, který se skládá z jedné z následujících manifestu konstant, které jsou definovány v < share.h >.
_SH_DENYRW
Odepře přístup pro čtení a zápis do souboru._SH_DENYWR
Odepře přístup pro zápis do souboru._SH_DENYRD
Odepře přístup pro čtení do souboru._SH_DENYNO
Povolení čtení a zápis.
pmode Argument vždy je nutné, na rozdíl od v _sopen.Pokud zadáte _O_CREAT, pokud soubor neexistuje, pmode Určuje nastavení oprávnění souboru, které jsou nastaveny při prvním zavření nový soubor.V opačném pmode je ignorována.pmode je celé číslo výraz, který obsahuje jeden nebo oba z manifestu konstant _S_IWRITE a _S_IREAD, které jsou definovány v < sys\stat.h >.Když jsou uvedeny obě konstanty, jsou spojeny s operátorem bitová OR.Význam pmode je následujícím způsobem.
_S_IWRITE
Zápis povolen._S_IREAD
Při čtení povoleny._S_IREAD | _S_IWRITE
Čtení a zápis povolen.
Není-li oprávnění k zápisu zadán, soubor je jen pro čtení.Všechny soubory v operačním systému Windows jsou čitelnou; není možné udělit oprávnění jen pro zápis.Proto režimy _S_IWRITE a _S_IREAD | _S_IWRITE jsou ekvivalentní.
_sopen_s použije aktuální maska souboru oprávnění k pmode předtím, než jsou oprávnění nastavena.(Viz _umask.)
Požadavky
Rutina |
Požadovaný hlavičkový soubor |
Volitelné záhlaví |
---|---|---|
_sopen_s |
< io.h > |
< fcntl.h >, < sys\types.h >, < sys\stat.h >, < share.h > |
_wsopen_s |
< io.h > nebo < wchar.h > |
< fcntl.h >, < sys/types.h >, < sys/stat.h >, < share.h > |
_sopen_s a _wsopen_s jsou rozšíření od společnosti Microsoft.Další informace o kompatibilitě, podívejte se na téma Kompatibilita.
Příklad
Podívejte se na příklad pro _locking.