_open, _wopen

Apre un file.Queste funzioni sono deprecate in quanto versioni più sicure sono disponibili; vedere _sopen_s, _wsopen_s.

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

Parametri

  • filename
    Nome file.

  • oflag
    Tipo di operazioni consentite.

  • pmode
    Modalità di autorizzazione.

Valore restituito

Ognuna di queste funzioni restituisce un descrittore del file per il file aperto.Il valore di ritorno -1 indica un errore, nel qual caso errno viene impostato su uno dei seguenti valori.

  • EACCES
    Provando ad aprire un file in sola lettura per la scrittura, la modalità di condivisione di file non permette le operazioni specificate, o il percorso fornito è una cartella.

  • EEXIST
    Sono stati specificati i flag _O_CREAT e _O_EXCL, ma filename esiste già.

  • EINVAL
    Argomenti oflag o pmode non validi.

  • EMFILE
    Descrittori di file non più disponibili (troppi file aperti).

  • ENOENT
    File o percorso non trovato.

Per ulteriori informazioni su questi e altri codici restituiti, vedere _doserrno, errno, _sys_errlist, e _sys_nerr.

Note

La funzione _open apre il file specificato da filename e prepara il file per la lettura o la scrittura, come specificato in oflag._wopen è una versione a caratteri estesi di _open; l'argomento filename in _wopen è una stringa di caratteri estesi._wopen e _open si comportano in modo identico in caso contrario.

Mapping di routine a Testo generico

Routine Tchar.h

_UNICODE e _MBCS non definiti

_MBCS definito

_UNICODE definito

_topen

_open

_open

_wopen

oflag è un'espressione Integer formata da uno o più delle costanti manifesto seguenti o combinazioni delle costanti definite in Fcntl.h.

  • _O_APPEND
    Cambia il puntatore del file in EOF prima di ogni operazione di scrittura.

  • _O_BINARY
    Apre un file in modalità binaria (non tradotta).(Vedere fopen per una descrizione della modalità binaria.)

  • _O_CREAT
    Crea ed apre un nuovo file in scrittura.Non ha effetto se il file specificato da filename esiste.L'argomento pmode è necessario quando _O_CREAT è specificato.

  • _O_CREAT| _O_SHORT_LIVED
    Crea un file come temporaneo e se possibile non lo scarica su disco.L'argomento pmode è necessario quando _O_CREAT è specificato.

  • _O_CREAT| _O_TEMPORARY
    Crea un file come temporaneo; il file viene eliminato quando l'ultimo descrittore del file viene chiuso.L'argomento pmode è necessario quando _O_CREAT è specificato.

  • _O_CREAT| _O_EXCL
    Restituisce un errore se il file specificato da filename esiste.Si applica solo se utilizzato con _O_CREAT.

  • _O_NOINHERIT
    Impedisce la creazione di un descrittore di file condiviso.

  • _O_RANDOM
    Specifica che la memorizzazione nella cache è ottimizzata, ma non limitata, per l'accesso casuale dal disco.

  • _O_RDONLY
    Apre un file in sola lettura; non può essere specificato con _O_RDWR o _O_WRONLY.

  • _O_RDWR
    Apre il file sia per la lettura che per la scrittura; non è possibile specificare questo flag con _O_RDONLY o _O_WRONLY.

  • _O_SEQUENTIAL
    Specifica che la memorizzazione nella cache è ottimizzata, ma non limitata, per l'accesso sequenziale dal disco.

  • _O_TEXT
    Apre un file in modalità testo (convertito).(Per ulteriori informazioni, vedere File I/O modalità testo e binaria e fopen).

  • _O_TRUNC
    Apre un file e lo tronca a lunghezza zero; il file deve disporre dell'autorizzazione in scrittura.Non è possibile specificare questo flag con _O_RDONLY._O_TRUNC utilizzato con _O_CREAT apre un file esistente o crea un nuovo file.

    [!NOTA]

    Il flag _O_TRUNC elimina in maniera permanente il contenuto del file specificato.

  • _O_WRONLY
    Apre il file in sola scrittura; non può essere specificato con _O_RDONLY o _O_RDWR.

  • _O_U16TEXT
    Apre il file in modalità Unicode UTF-16.

  • _O_U8TEXT
    Apre il file in modalità Unicode UTF-8.

  • _O_WTEXT
    Apre il file in modalità Unicode.

Per specificare la modalità di accesso al file, è necessario specificare _O_RDONLY, _O_RDWR, o _O_WRONLY.Non vi è alcun valore predefinito per la modalità d'accesso.

Se _O_WTEXT viene utilizzato per aprire un file in lettura, _open legge l'inizio del file e fa un controllo per un byte order mark (BOM).Se sono presenti i BOM, il file viene trattato come UTF-8 o UTF-16LE come un BOM.Se nessun BOM è presente, il file viene considerato come ANSI.Quando un file viene aperto per la scrittura tramite _O_WTEXT, viene utilizzato UTF-16.Se _O_UTF8 viene utilizzato, il file viene aperto sempre come UTF-8 e se _O_UTF16 viene utilizzato, il file viene aperto sempre come UTF-16 indipendentemente da qualsiasi impostazione precedente o BOM.

Se _open viene chiamata con _O_WRONLY|_O_APPEND (modalità di aggiunta) e _O_WTEXT, _O_U16TEXT, o _O_U8TEXT, tenterà innanzitutto di aprire il file in lettura e scrittura, di leggere il BOM, e quindi riaprirlo in sola scrittura.Se l'apertura del file in lettura e scrittura ha esito negativo, il file verrà aperto in sola lettura e verrà utilizzato il valore predefinito per l'impostazione della modalità Unicode.

Quando due o più costanti manifesto vengono utilizzate per formare l'argomento oflag, le costanti vengono combinate con l'operatore OR bit per bit ( |).Per una descrizione della modalità binaria e di testo, vedere La modalità binario e testo consente l'i/o.

L'argomento pmode è necessario solo quando è specificato _O_CREAT.Se il file esiste già, pmode viene ignorato.In caso contrario, pmode specifica le impostazioni delle autorizzazioni del file, che vengono impostate quando il nuovo file viene chiuso la prima volta._open applica la maschera corrente dei permessi del file a pmode prima di impostare le autorizzazioni (per ulteriori informazioni, vedere _umask).pmode è un'espressione Integer contenente una o entrambe le seguenti costanti manifesto, definita in SYS\Stat.h.

  • _S_IREAD
    Permesso in sola lettura.

  • _S_IWRITE
    Permessa in scrittura (effettivamente consente sia la lettura che la scrittura).

  • _S_IREAD | _S_IWRITE
    Lettura e scrittura consentite.

Quando vengono fornite entrambe le costanti, queste sono combinate con l'operatore OR bit per bit. |).In Windows NT, tutti i file sono leggibili, pertanto l'autorizzazione di sola scrittura non è disponibile; quindi le modalità _S_IWRITE e _S_IREAD | _S_IWRITE sono equivalenti.

Se un valore diverso da quelli sopra viene specificato per pmode (anche se specificherebbe pmode valido in un altro sistema operativo) o qualsiasi valore diverso dai valori consentiti oflag, la funzione genera un'asserzione in modalità di debug e richiama il gestore di parametri non validi come descritto in Convalida dei parametri.Se l'esecuzione può continuare, la funzione restituisce -1 ed imposta errno a EINVAL.

Requisiti

Routine

Intestazione obbligatoria

Intestazione facoltativa

_open

<io.h>

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

_wopen

<io.h> o <wchar.h>

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

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Librerie

Tutte le versioni delle Librerie di runtime C.

Esempio

// 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 );
   }
}

Output

Open succeeded on input file
Open succeeded on output file

Equivalente .NET Framework

Vedere anche

Riferimenti

L'I/O di basso livello

_chmod, _wchmod

_close

_create, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen