Sdílet prostřednictvím


_open, _wopen

Otevře soubor.Tyto funkce jsou nepoužívá, protože bezpečnější verze jsou k dispozici; see _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
    Typ operace povolena.

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

Vrácená hodnota

Každá z těchto funkcí vrátí popisovač souboru otevřeného souboru.Vrácená hodnota-1 označuje chybu, v případě errno je nastavena na jednu z následujících hodnot.

  • EACCES
    Došlo k pokusu o otevření souboru jen pro čtení pro zápis, režim sdílení souboru nepovoluje zadanou operací nebo danou cestu je adresář.

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

  • EINVAL
    Neplatný oflag nebo pmode argument.

  • EMFILE
    Žádné další popisovače souboru k dispozici (příliš mnoho otevřených souborů).

  • ENOENT
    Soubor nebo cesta nebyla nalezena.

Další informace o těchto a jiných návratové kódy, viz _doserrno, kód chyby, _sys_errlist a _sys_nerr.

Poznámky

_open Funkce otevře určený soubor filename a připraví soubor pro čtení nebo zápisu podle oflag._wopenje verze celého znaku _open; filename argument _wopen je řetězec znaků wide._wopena _open chovají jinak shodně.

Obecný Text rutinní mapování

Rutina Tchar.h

_UNICODE a _MBCS není definován

_MBCS, definice

_UNICODE, definice

_topen

_open

_open

_wopen

oflagvýraz celé číslo vytvořené z jedné nebo více z následujících konstant manifestu nebo konstantní kombinace definované v Fcntl.h.

  • _O_APPEND
    Přesune ukazatel souboru na konec souboru před každou operaci 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ří a otevře nový soubor pro zápis.Pokud určený soubor nemá žádný vliv filename existuje.pmodeargument je vyžadován při _O_CREAT je určena.

  • _O_CREAT| _O_SHORT_LIVED
    Vytvoření souboru jako dočasné a pokud možno nebyla vyprázdněna na disk.pmodeargument je vyžadován při _O_CREAT je určena.

  • _O_CREAT| _O_TEMPORARY
    Vytvoření souboru jako dočasné; soubor je odstraněn po zavření poslední popisovač souboru.pmodeargument je vyžadován při _O_CREAT je určena.

  • _O_CREAT| _O_EXCL
    Vrátí chybovou hodnotu, pokud soubor určený filename existuje.Platí pouze při použití s _O_CREAT.

  • _O_NOINHERIT
    Zabrání vytvoření sdíleného souboru deskriptoru.

  • _O_RANDOM
    Určuje, že do mezipaměti je optimalizována pro, ale není omezen na náhodný přístup z disku.

  • _O_RDONLY
    Otevře soubor pro čtení pouze; Nelze zadat s _O_RDWR nebo _O_WRONLY.

  • _O_RDWR
    Otevře soubor pro čtení i zápis; Nelze zadat tento příznak s _O_RDONLY nebo _O_WRONLY.

  • _O_SEQUENTIAL
    Určuje, že do mezipaměti je optimalizována pro, ale není omezen na sekvenční přístup z disku.

  • _O_TEXT
    Otevře soubor v režimu text (přeložit).(Další informace naleznete v tématu textu a binární režim souboru v/V a fopen.)

  • _O_TRUNC
    Otevře soubor a zkrátí jej nulové délky; soubor musí mít oprávnění k zápisu.Nelze zadat tento příznak s _O_RDONLY._O_TRUNCs _O_CREAT otevře existující soubor nebo vytvoří nový soubor.

    [!POZNÁMKA]

    _O_TRUNC Příznak ničí obsah zadaného souboru.

  • _O_WRONLY
    Otevře soubor pro zápis. Nelze zadat s _O_RDONLY nebo _O_RDWR.

  • _O_U16TEXT
    Otevřete soubor v režimu Unicode UTF-16.

  • _O_U8TEXT
    Otevřete soubor v režimu Unicode UTF-8.

  • _O_WTEXT
    Otevřete soubor v režimu Unicode.

Chcete-li určit režim přístupu k souboru je nutné zadat buď _O_RDONLY, _O_RDWR, nebo _O_WRONLY.Výchozí hodnota pro režim přístupu neexistuje.

Pokud _O_WTEXT se používá k otevření souboru pro čtení, _open přečte začátku souboru a zkontrolujte, zda značka pro pořadí bajtů (BOM).Pokud je Kusovník, soubor se zachází jako UTF-8 nebo UTF-16LE v závislosti na Kusovníku.Pokud je k dispozici žádné Kusovníku, soubor je považován za ANSI.Při otevření souboru pro zápis pomocí _O_WTEXT, je použito kódování UTF-16.Pokud _O_UTF8 je použita, vždy otevření souboru jako UTF-8 a pokud _O_UTF16 je použita, vždy otevření souboru jako UTF-16 bez ohledu na jakékoli předchozí nastavení nebo bajt značka pro pořadí.

Pokud _open je volána s _O_WRONLY|_O_APPEND (režim Přidat) a _O_WTEXT, _O_U16TEXT, nebo _O_U8TEXT, se nejprve pokusí otevřít soubor pro čtení a zápis, čtení Kusovníku a poté jej znovu otevřete pro psaní pouze.Pokud otevřete soubor pro čtení a zápis se nezdaří, bude soubor pro zápis pouze otevřít a použít výchozí hodnotu pro nastavení režimu Unicode.

Při použití dvou nebo více manifestu konstanty do formuláře oflag argument, konstanty jsou kombinovány s (operátor bitový operátor OR |).Diskuse režimy binární a textu, viz textu a binární režim souboru v/V.

pmode Argument je vyžadován pouze při _O_CREAT je určena.Pokud soubor již existuje, pmode je ignorována.Jinak pmode určuje nastavení oprávnění souboru, které jsou nastaveny při prvním zavření nového souboru._openpoužije aktuální maska souboru oprávnění k pmode před nastavením oprávnění (Další informace naleznete v _umask).pmodeje výraz celé číslo obsahující jeden nebo oba následující manifestu konstanty definované v SYS\Stat.h.

  • _S_IREAD
    Povoleno pouze čtení.

  • _S_IWRITE
    Zápis povolen (účinně umožňuje čtení a zápis).

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

Při obou konstanty jsou uvedeny, jsou spojeny pomocí operátoru bitový operátor OR ( |).V systému Windows NT jsou čitelné, všechny soubory na tak oprávnění jen pro zápis není k dispozici; proto režimy _S_IWRITE a**_S_IREAD** | _S_IWRITEjsou ekvivalentní.

Pokud je zadána hodnota jiných než výše uvedených pmode (i v případě, že by zadejte platné pmode v jiném operačním systému) nebo jinou hodnotu než povolená oflag zadané hodnoty, funkce generuje nepravdivých v režimu ladění a vyvolá obsluhu neplatný parametr popsaným v Ověření parametrů.Pokud je povoleno spuštění pokračovat, vrátí funkce hodnotu -1 a sady errno na EINVAL.

Požadavky

Rutina

Požadované záhlaví

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>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

Knihovny

Všechny verze C Runtime knihovny.

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ýsledek

Open succeeded on input file
Open succeeded on output file

Ekvivalent v rozhraní .NET Framework

Viz také

Referenční dokumentace

Nízké úrovně I/O

_chmod _wchmod

_close

_creat _wcreat

_dup _dup2

fopen _wfopen

_sopen _wsopen