_sopen_s _wsopen_s
Otevře soubor pro sdílení.Tyto verze jsou _sopen a _wsopen s vylepšení zabezpečení popsaným 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
[výstup]pfh
Popisovač souboru nebo -1 o chybě.[v]filename
Název souboru.[v]oflag
Typ operace povolena.[v]shflag
Typ sdílení povoleno.[v]pmode
Nastavení oprávnění.
Vrácená hodnota
Nenulová hodnota vrácená v případě označuje chybu, errno je nastavena na jednu z následujících hodnot.
EACCES
Danou cestu je adresář, nebo je soubor jen pro čtení, ale byl proveden pokus o operaci otevřít pro zápis.EEXIST
_O_CREAT a _O_EXCL příznaky nebyly zadány, ale filename již existuje.EINVAL
Invalid oflag, shflag, orpmode argument, or pfh or filename was a null pointer.EMFILE
Žádné další soubor popisovače k dispozici.ENOENT
Soubor nebo cesta nebyla nalezena.
Pokud je neplatný argument předaný funkci, je vyvolána neplatný parametr popisovače, jak je popsáno v Ověření parametrů.Pokud je povoleno spuštění pokračovat, errno je nastavena na EINVAL a EINVAL je vrácena.
Další informace o těchto a jiných návratové kódy, viz _doserrno, kód chyby, _sys_errlist a _sys_nerr.
O chybě, bude vrácena -1 až pfh (Pokud pfh je ukazatel s hodnotou null).
Poznámky
_sopen_s Funkce otevře určený soubor filename a připraví soubor sdílené čtení nebo zápisu, podle oflag a shflag._wsopen_sje verze celého znaku _sopen_s; filename argument _wsopen_s je řetězec znaků wide._wsopen_sa _sopen_s chovají jinak shodně.
Obecný Text rutinní mapování
Rutina Tchar.h |
_UNICODE a _MBCS není definován |
_MBCS, definice |
_UNICODE, definice |
---|---|---|---|
_tsopen_s |
_sopen_s |
_sopen_s |
_wsopen_s |
Výraz celé oflag je tvořen kombinací jedné nebo více manifestu konstanty definované v souboru Fcntl.h.Po dvou nebo více konstanty formuláře argument oflag, jsou kombinovány s (operátor bitový operátor OR | ).
_O_APPEND
Přemístí ukazatel souboru na konec souboru před každou operaci 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ří a otevře nový soubor pro zápis.Pokud určený soubor nemá žádný vliv filename existuje._O_CREAT| _O_SHORT_LIVED
Vytvoření souboru jako dočasné a pokud možno nebyla vyprázdněna na disk._O_CREAT| _O_TEMPORARY
Vytvoření souboru jako dočasné; soubor je odstraněn po zavření poslední popisovač souboru._O_CREAT| _O_EXCL
Vrátí chybovou hodnotu, pokud soubor určený filename existuje.Platí pouze při použití s _O_CREAT._O_NOINHERIT
Zabrání vytvoření sdíleného souboru deskriptoru._O_RANDOM
Určuje především náhodný přístup z disku._O_RDONLY
Otevře soubor pro čtení pouze; Nelze zadat s _O_RDWR nebo _O_WRONLY._O_RDWR
Otevře soubor pro čtení i zápis; 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 text (přeložit).(Další informace naleznete v tématu textu a binární režim souboru v/V a fopen.)_O_TRUNC
Otevře soubor a zkrátí jej nulové délky; soubor musí mít oprávnění k zápisu.Nelze zadat tento příznak s _O_RDONLY._O_TRUNC s _O_CREAT otevře existující soubor nebo vytvoří nový soubor.[!POZNÁMKA]
_O_TRUNC Příznak ničí obsah zadaného souboru.
_O_WRONLY
Otevře soubor pro zápis. Nelze zadat s _O_RDONLY nebo _O_RDWR._O_U16TEXT
Otevřete soubor v režimu Unicode UTF-16._O_U8TEXT
Otevřete soubor v režimu Unicode UTF-8._O_WTEXT
Otevřete soubor v režimu Unicode.
Chcete-li určit režim přístupu k souboru je nutné zadat buď _O_RDONLY, _O_RDWR, nebo _O_WRONLY.Výchozí hodnota pro režim přístupu neexistuje.
Pokud _sopen_s je volána s _O_WRONLY|_O_APPEND (režim Přidat) a _O_WTEXT, _O_U16TEXT, nebo _O_U8TEXT, se nejprve pokusí otevřít soubor pro čtení a zápis, čtení Kusovníku a poté jej znovu otevřete pro psaní pouze.Pokud otevřete soubor pro čtení a zápis se nezdaří, bude soubor pro zápis pouze otevřít a použít výchozí hodnotu pro nastavení režimu Unicode.
Argument shflag je konstanta, skládající se z jedné z následujících konstant manifestu definované v Share.h.
_SH_DENYRW
Zakazuje č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í souboru._SH_DENYNO
Povolení čtení a zápis.
pmode Argument je vždy nutné, na rozdíl od v _sopen.Při zadávání _O_CREAT, pokud soubor neexistuje, pmode určuje nastavení oprávnění v souboru, které jsou nastaveny při prvním zavření nového souboru.Jinak pmode je ignorována.pmodeje výraz celé číslo, který obsahuje jeden nebo oba manifestu konstanty _S_IWRITE a _S_IREAD, definované v SYS\Stat.h.Při obou konstanty jsou uvedeny, jsou kombinovány s operátorem bitový operátor OR.Význam pmode je následující.
_S_IWRITE
Zápis povolen._S_IREAD
Čtení povoleny._S_IREAD | _S_IWRITE
Čtení a zápis povolen.
Pokud oprávnění k zápisu není uvedena, je soubor jen pro čtení.V operačním systému Windows jsou všechny soubory čitelné; není možné udělit oprávnění pouze pro zápis.Proto režimy _S_IWRITE a _S_IREAD | _S_IWRITE jsou rovnocenné.
_sopen_spoužije aktuální maska souboru oprávnění k pmode před nastavením oprávnění (viz _umask).
Požadavky
Rutina |
Požadované záhlaví |
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> |
Další informace o kompatibilitě v tématu Compatibility v úvodu.
Příklad
Viz příklad pro _locking.