Sdílet prostřednictvím


_open, _wopen

Otevře soubor.Tyto funkce jsou zastaralá, protože zvyšuje bezpečnost verze jsou k dispozici; Podívejte se na téma _sopen_s, _wsopen_s.

int _open(
   const char *filename,
   int oflag [,
   int pmode] 
);
int _wopen(
   const wchar_t *filename,
   int oflag [,
   int pmode] 
);

Parametry

  • filename
    Název souboru.

  • oflag
    Druh operace, které jsou povoleny.

  • pmode
    Režim oprávnění.

Vrácená hodnota

Každá z těchto funkcí, vrátí se popisovač souboru pro otevřeného souboru.Vrácená hodnota-1 určuje chybu; v takovém případě errno nastaven na jednu z následujících hodnot.

  • EACCES
    Byl proveden pokus o otevření souboru jen pro čtení pro zápis souboru sdílení režimu nepovoluje zadanou operací, nebo zadaná cesta je adresář.

  • EEXIST
    _O_CREAT a _O_EXCL příznaky zadán, ale filename již existuje.

  • EINVAL
    Neplatný oflag nebo pmode argument.

  • EMFILE
    Nejsou k dispozici žádné další popisovače souboru (je otevřeno příliš mnoho souborů).

  • ENOENT
    Soubor nebo cesta nebyla nalezena.

Další informace o těchto a dalších návratové kódy naleznete v tématu errno, _doserrno, _sys_errlist, and _sys_nerr.

Poznámky

_open Funkce otevře do souboru určeného parametrem filename a připraví je pro čtení nebo zápisu podle oflag._wopen je verze širokého znaku _open; filename argumentu _wopen obsahuje řetězec širokého znaku._wopen a _open 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

_topen

_open

_open

_wopen

oflag je celé číslo výrazu tvořen z jedné nebo více následujících manifestu konstanty nebo konstantní kombinace, které jsou definovány v < fcntl.h >.

  • _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.pmode Argument je vyžadován v případě _O_CREAT je zadán.

  • _O_CREAT | _O_SHORT_LIVED
    Vytvoří soubor jako dočasné a pokud je to možné není vyprázdnit na disk.pmode Argument je vyžadován v případě _O_CREAT je zadán.

  • _O_CREAT | _O_TEMPORARY
    Vytvoří soubor jako dočasné; soubor je odstraněn při zavření poslední popisovač souboru.pmode Argument je vyžadován v případě _O_CREAT je zadán.

  • _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, že ukládání do mezipaměti je optimalizována pro, ale nejsou omezeny na 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, že ukládání do mezipaměti je optimalizována pro, ale nejsou omezeny na 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.

Pokud _O_WTEXT slouží k otevření souboru pro čtení, _open přečte začátku souboru a zkontroluje značka pořadí bajtů (BOM).Pokud je Kusovník, soubor je považována za UTF-8 nebo UTF-16LE, v závislosti na Kusovníku.Pokud neexistuje žádné Kusovníku, soubor je považována za ANSI.Při otevření souboru pro zápis pomocí _O_WTEXT, je použita UTF-16.Bez ohledu na to ze všech předchozí nastavení nebo bajtové značka pro pořadí, pokud _O_U8TEXT se používá, vždy otevření souboru jako UTF-8, pokud _O_U16TEXT se používá, vždy otevření souboru jako UTF-16.

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

Pokud dvě nebo více manifestu konstanty se používají k formuláři oflag argument, konstanty jsou spojeny s na (operátor bitová OR|).Diskusi režimů binární a text, naleznete v části Text a vstupně-výstupní soubor binární režim.

pmode Argument je třeba zadat pouze v případě _O_CREAT je zadán.Pokud soubor již existuje, pmode je ignorována.V opačném pmode Určuje nastavení oprávnění souborů, které jsou nastaveny při prvním zavření nový soubor._open použije aktuální maska souboru oprávnění k pmode předtím, než jsou oprávnění nastavena.(Další informace naleznete v tématu _umask.) pmode je celé číslo výraz, který obsahuje jeden nebo oba následující manifestu konstanty, které jsou definovány v < sys\stat.h >.

  • _S_IREAD
    Povoleno pouze při čtení.

  • _S_IWRITE
    Zápis povolen.(V důsledku toho umožňuje čtení a zápis.)

  • _S_IREAD | _S_IWRITE
    Čtení a zápis povolen.

Když jsou uvedeny obě konstanty, jsou spojeny s na (operátor bitová OR|).V systému Windows jsou všechny soubory čitelnou; oprávnění jen pro zápis není k dispozici.Proto režimy _S_IWRITE a _S_IREAD  | _S_IWRITE jsou ekvivalentní.

Pokud jinou hodnotu než kombinaci _S_IREAD a _S_IWRITE je určena pro pmode– i v případě, že by zadejte platné pmode v jiném operačním systému – nebo pokud je některá jiné než povolená hodnota oflag určeny hodnoty, funkce generuje kontrolní výrazy v režimu ladění a vyvolá obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametru.Pokud je povoleno spuštění pokračovat, funkce vrátí hodnotu -1 a nastaví errno na EINVAL.

Požadavky

Rutina

Požadovaný hlavičkový soubor

Volitelné záhlaví

_open

< io.h >

< fcntl.h >, < sys\types.h >, < sys\stat.h >

_wopen

< io.h > nebo < wchar.h >

< fcntl.h >, < sys\types.h >, < sys\stat.h >

_open a _wopen jsou rozšíření od společnosti Microsoft.Další informace o kompatibilitě, podívejte se na téma Kompatibilita.

Knihovny

Všechny verze knihoven C run-time.

Příklad

// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
 * named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
 * for output. The files are then closed.
 */
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>

int main( void )
{
   int fh1, fh2;

   fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
   // Note: _open is deprecated; consider using _sopen_s instead
   if( fh1 == -1 )
      perror( "Open failed on input file" );
   else
   {
      printf( "Open succeeded on input file\n" );
      _close( fh1 );
   }

   fh2 = _open( "CRT_OPEN.OUT", _O_WRONLY | _O_CREAT, _S_IREAD | 
                            _S_IWRITE ); // C4996
   if( fh2 == -1 )
      perror( "Open failed on output file" );
   else
   {
      printf( "Open succeeded on output file\n" );
      _close( fh2 );
   }
}

Výstup

Open succeeded on input file
Open succeeded on output file

Ekvivalent v rozhraní .NET Framework

Viz také

Referenční dokumentace

I/O nízké úrovně

_chmod, _wchmod

_close

_creat, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen