Sdílet prostřednictvím


_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.

Viz také

Referenční dokumentace

I/O nízké úrovně

_close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen