_sopen, _wsopen

Otevře soubor pro sdílení. K dispozici jsou bezpečnější verze těchto funkcí: viz _sopen_s, _wsopen_s.

Syntaxe

int _sopen(
   const char *filename,
   int oflag,
   int shflag [,
   int pmode ]
);
int _wsopen(
   const wchar_t *filename,
   int oflag,
   int shflag [,
   int pmode ]
);

Parametry

filename
Název souboru

oflag
Druh operací je povolený.

shflag
Druh sdílení je povolený.

pmode
Nastavení oprávnění.

Vrácená hodnota

Každá z těchto funkcí vrátí popisovač souboru otevřeného souboru.

Pokud filename je ukazatel nebo NULL oflag pokud oflag nebo shflag není v platném rozsahu hodnot, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, vrátí tyto funkce hodnotu -1 a nastaví errno se na jednu z následujících hodnot.

errno hodnota Podmínka
EACCES Daná cesta je adresář nebo soubor je jen pro čtení, ale došlo k pokusu o operaci otevření pro zápis.
EEXIST _O_CREAT a _O_EXCL příznaky byly zadány, ale filename již existují.
EINVAL Neplatný oflag argument nebo shflag argument.
EMFILE Nejsou k dispozici žádné další popisovače souborů.
ENOENT Soubor nebo cesta se nenašly.

Další informace o těchto a dalších návratových kódech naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno

Poznámky

Funkce _sopen otevře soubor určený filename a připraví soubor pro sdílené čtení nebo zápis, jak je definováno oflag a shflag. _wsopenje verze širokého znaku _sopenfilename ; argument je _wsopen řetězec širokého znaku. _wsopen a _sopen chovat se stejně jinak.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Pokud ho chcete změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

Tchar.h rutina _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_tsopen _sopen _sopen _wsopen

Celočíselná výraz oflag je tvořen kombinací jedné nebo více následujících konstant manifestu, které jsou definovány v <fcntl.h>. Když dvě nebo více konstant tvoří argument oflag, jsou kombinovány s bitovým operátorem OR ( | ).

oflag konstanta Chování
_O_APPEND Před každou operací zápisu přesune ukazatel na konec souboru.
_O_BINARY Otevře soubor v binárním (nepřeloženém) režimu. (Viz fopen popis binárního režimu.)
_O_CREAT Vytvoří soubor a otevře ho pro zápis. Nemá žádný vliv, pokud soubor určený filename existuje. Argument pmode je povinný, pokud _O_CREAT je zadán.
_O_CREAT | _O_SHORT_LIVED Vytvoří soubor jako dočasný a pokud je to možné, nevyprázdní se na disk. Argument pmode je povinný, pokud _O_CREAT je zadán.
_O_CREAT | _O_TEMPORARY Vytvoří soubor jako dočasný; soubor se odstraní při zavření posledního popisovače souboru. Argument pmode je povinný, pokud _O_CREAT je zadán. Aby se zachovalo starší chování kvůli kompatibilitě aplikací, nebrání ostatním procesům v odstranění tohoto souboru.
_O_CREAT | _O_EXCL Vrátí chybovou hodnotu, pokud soubor zadaný filename existuje. Platí pouze při použití s _O_CREAT.
_O_NOINHERIT Zabraňuje vytvoření sdíleného popisovače souboru.
_O_RANDOM Určuje, že ukládání do mezipaměti je optimalizované pro náhodný přístup z disku, ale není omezené na.
_O_RDONLY Otevře soubor jen pro čtení. Nelze zadat pomocí _O_RDWR nebo _O_WRONLY.
_O_RDWR Otevře soubor pro čtení i zápis. Nelze zadat pomocí _O_RDONLY nebo _O_WRONLY.
_O_SEQUENTIAL Určuje, že ukládání do mezipaměti je optimalizované pro sekvenční přístup z disku, ale není omezené na.
_O_TEXT Otevře soubor v textovém režimu ANSI (přeložený). (Další informace najdete v tématu Vstupně-výstupní a binární soubor textového a binárního režimu a fopen.)
_O_TRUNC Otevře soubor a zkrátí ho na nulovou délku; soubor musí mít oprávnění k zápisu. Nelze zadat pomocí parametru _O_RDONLY. _O_TRUNC použitý při _O_CREAT otevření existujícího souboru nebo vytvoření souboru. Poznámka: Příznak _O_TRUNC zničí obsah zadaného souboru.
_O_WRONLY Otevře soubor pouze pro zápis. Nelze zadat pomocí _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řístupu k souboru, je nutné zadat _O_RDONLYbuď , _O_RDWRnebo _O_WRONLY. Pro režim přístupu neexistuje žádná výchozí hodnota.

Když je soubor otevřen v režimu Unicode pomocí _O_WTEXT, _O_U8TEXTnebo _O_U16TEXT, vstupní funkce přeložit data načtená ze souboru do dat UTF-16 uložených jako typ wchar_t. Funkce, které zapisují do souboru otevřeného v režimu Unicode, očekávají vyrovnávací paměti obsahující data UTF-16 uložená jako typ wchar_t. Pokud je soubor kódovaný jako UTF-8, při zápisu se data UTF-16 přeloží do UTF-8. Obsah souboru s kódováním UTF-8 se při čtení přeloží do UTF-16. Pokus o čtení nebo zápis lichého počtu bajtů v režimu Unicode způsobí chybu ověření parametru. Pokud chcete číst nebo zapisovat data uložená v programu jako UTF-8, použijte místo režimu Unicode textový nebo binární soubor. Zodpovídáte za jakýkoli požadovaný překlad kódování.

Pokud _sopen je volána pomocí _O_WRONLY_O_APPEND | (režim připojení) a _O_WTEXT, _O_U16TEXTnebo , se _O_U8TEXTnejprve pokusí otevřít soubor pro čtení a zápis, přečtěte si kusovník a znovu ho otevřete pouze pro zápis. Pokud se otevření souboru pro čtení a zápis nezdaří, otevře soubor pouze pro zápis a použije výchozí hodnotu pro nastavení režimu Unicode.

shflag Argument je konstantní výraz sestávající z jedné z následujících konstant manifestu, které jsou definovány v <share.h>.

shflag konstanta Chování
_SH_DENYRW Odepře přístup ke čtení a zápisu do souboru.
_SH_DENYWR Odmítne přístup k zápisu do souboru.
_SH_DENYRD Odmítne přístup pro čtení k souboru.
_SH_DENYNO Povoluje přístup pro čtení a zápis.

Argument pmode je povinný pouze v případě, že _O_CREAT je zadán. Pokud soubor neexistuje, pmode určuje nastavení oprávnění souboru, které se nastaví při prvním zavření nového souboru. Jinak se pmode ignoruje. pmode je celočíselná výraz, který obsahuje jednu nebo obě konstanty _S_IWRITE manifestu a _S_IREAD, které jsou definovány v <sys\stat.h>. Při zadání obou konstant se zkombinují s bitovým operátorem OR. pmode Význam je následující.

pmode Význam
_S_IREAD Je povoleno pouze čtení.
_S_IWRITE Zápis je povolený. (Ve skutečnosti povoluje čtení a zápis.)
_S_IREAD | _S_IWRITE Čtení a psaní je povoleno.

Pokud oprávnění k zápisu není uděleno, soubor je jen pro čtení. V operačním systému Windows jsou všechny soubory čitelné; Oprávnění jen pro zápis není možné udělit. Proto jsou režimy _S_IWRITE a _S_IREAD | _S_IWRITE jsou ekvivalentní.

_sopen použije aktuální masku oprávnění k souboru před pmode nastavením oprávnění. Další informace najdete na webu _umask.

Požadavky

Function Požadovaný hlavičkový soubor Volitelné záhlaví
_sopen <io.h> <fcntl.h>, <sys\types.h>, , <sys\stat.h><share.h>
_wsopen <io.h> nebo <wchar.h> <fcntl.h>, <sys\types.h>, , <sys\stat.h><share.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

Podívejte se na příklad pro _locking.

Viz také

Vstupně-výstupní operace nízké úrovně
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen