_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
System::IO::FileStream::FileStream