_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
_doserrno
errno
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
. _wsopen
je verze širokého znaku _sopen
filename
; 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_RDONLY
buď , _O_RDWR
nebo _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_U8TEXT
nebo _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_U16TEXT
nebo , se _O_U8TEXT
nejprve 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