Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 oflagNULL 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 errno_doserrno . _sys_errlist_sys_nerr
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 naleznete v tématu Vstupně-výstupní a binární soubor textového a binárního režimu .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