Condividi tramite


_sopen, _wsopen

Apre un file per la condivisione. Sono disponibili versioni più sicure di queste funzioni. Vedere _sopen_s, _wsopen_s.

int _sopen(    const char *filename,    int oflag,    int shflag [,    int pmode ]  ); int _wsopen(    const wchar_t *filename,    int oflag,    int shflag [,    int pmode ]  );

Parametri

  • filename
    Nome file.

  • oflag
    Tipo di operazioni consentite.

  • shflag
    Tipo di condivisione consentita.

  • pmode
    Impostazione di autorizzazione.

Valore restituito

Ognuna di queste funzioni restituisce un descrittore di file per il file aperto.

Se filename o oflag è un puntatore NULL o se oflag o shflag non è compreso in un intervallo di valori validi, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono -1 e impostano errno su uno dei valori seguenti.

  • EACCES
    Il percorso specificato è una directory o il file è di sola lettura, ma è stata tentata un'operazione di apertura in scrittura.

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

  • EINVAL
    L'argomento oflag o shflag non è valido.

  • EMFILE
    Non sono disponibili altri descrittori di file.

  • ENOENT
    Il file o il percorso non è stato trovato.

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

Note

La funzione _sopen apre il file specificato da filename e prepara il file per la lettura o la scrittura condivisa, come definito da oflag e shflag. _wsopen è una versione a caratteri wide di _sopen; l'argomento filename in _wsopen è una stringa di caratteri wide. In caso contrario, _wsopen e _sopen si comportano in modo identico.

Mapping di routine di testo generico

Routine Tchar.h

_UNICODE e _MBCS non definiti

_MBCS definito

_UNICODE definito

_tsopen

_sopen

_sopen

_wsopen

L'espressione Integer oflag è costituita dalla combinazione di una o più costanti del manifesto, definite in <fcntl.h>. Quando due o più costanti costituiscono l'argomento oflag, vengono combinate con l'operatore OR bit per bit ( | ).

  • _O_APPEND
    Riposiziona un puntatore a file alla fine del file prima di ogni operazione di scrittura.

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

  • _O_CREAT
    Crea e apre un nuovo file per la scrittura. Non ha effetto se il file specificato da filename esiste. L'argomento pmode è obbligatorio quando è specificato _O_CREAT.

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

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

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

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

  • _O_RANDOM
    Specifica l'accesso sul disco principalmente casuale.

  • _O_RDONLY
    Apre un file per la sola lettura. Non può essere specificato con _O_RDWR o _O_WRONLY.

  • _O_RDWR
    Apre un file per lettura e scrittura. Non può essere specificato con _O_RDONLY o _O_WRONLY.

  • _O_SEQUENTIAL
    Specifica l'accesso sul disco principalmente sequenziale.

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

  • _O_TRUNC
    Apre un file e lo tronca a lunghezza zero; il file deve disporre dell'autorizzazione di scrittura. Non può essere specificato con _O_RDONLY. _O_TRUNC usato con _O_CREAT apre un file esistente o crea un nuovo file.

    Nota

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

  • _O_WRONLY
    Apre un file per la sola scrittura. Non può essere specificato con _O_RDONLY o _O_RDWR.

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

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

  • _O_WTEXT
    Apre un 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.

Quando un file viene aperto in modalità Unicode usando _O_WTEXT, _O_U8TEXT o _O_U16TEXT, le funzioni di input traducono i dati letti dal file in dati UTF-16 archiviati come tipo wchar_t. Le funzioni che scrivono in un file aperto in modalità Unicode prevedono buffer contenenti dati UTF-16 archiviati come tipo wchar_t. Se il file è codificato come UTF-8, i dati UTF-16 vengono tradotti in UTF-8 alla scrittura e il contenuto del file codificato in UTF-8 viene tradotto in UTF-16 alla lettura. Un tentativo di leggere o scrivere un numero dispari di byte in modalità Unicode causerà un errore di convalida del parametro. Per leggere o scrivere dati archiviati nel programma come UTF-8, usare una modalità file di testo o binaria al posto della modalità Unicode. Eventuali traduzioni della codifica vanno gestite dall'utente.

Se _sopen viene chiamato con _O_WRONLY | _O_APPEND (modalità di aggiunta) e _O_WTEXT, _O_U16TEXT o _O_U8TEXT, tenterà prima di tutti di aprire il file per la lettura e la scrittura, di leggere l'indicatore di ordine dei byte e quindi di riaprirlo per la sola scrittura. Se l'apertura del file per lettura e scrittura ha esito negativo, il file verrà aperto per la sola lettura e verrà usato il valore predefinito per l'impostazione della modalità Unicode.

L'argomento shflag è un'espressione costante costituita da una delle costanti manifesto seguenti, definite in <share.h>.

  • _SH_DENYRW
    Nega l'accesso in lettura e scrittura a un file.

  • _SH_DENYWR
    Nega l'accesso in scrittura a un file.

  • _SH_DENYRD
    Nega l'accesso in lettura a un file.

  • _SH_DENYNO
    Consente l'accesso in lettura e scrittura.

L'argomento pmode è obbligatorio solo quando è specificato _O_CREAT. Se il file non esiste, pmode specifica le impostazioni di autorizzazione del file, che vengono impostate quando il nuovo file viene chiuso la prima volta. In caso contrario pmode viene ignorato. pmode è un'espressione Integer che contiene una o entrambe le costanti manifesto _S_IWRITE e _S_IREAD, definite in <sys\stat.h>. Quando vengono fornite entrambe le costanti, queste sono combinate con l'operatore OR bit per bit. Il significato di pmode è indicato di seguito.

  • _S_IWRITE
    Scrittura consentita.

  • _S_IREAD
    Lettura consentita.

  • _S_IREAD | _S_IWRITE
    Lettura e scrittura consentite.

Se non viene concessa l'autorizzazione in scrittura, il file è di sola lettura. Nel sistema operativo Windows, tutti i file sono leggibili; non è possibile concedere l'autorizzazione di sola scrittura. Di conseguenza, le modalità _S_IWRITE e _S_IREAD | _S_IWRITE sono equivalenti.

_sopen applica la maschera corrente di autorizzazione file a pmode prima di impostare le autorizzazioni. Vedere _umask.

Requisiti

Routine

Intestazione obbligatoria

Intestazione facoltativa

_sopen

<io.h>

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

_wsopen

<io.h> o <wchar.h>

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

Per altre informazioni sulla compatibilità, vedere Compatibilità.

Esempio

Vedere l'esempio per _locking.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione C standard, usare PInvoke. Per altre informazioni, vedere Esempi di platform invoke.

Vedere anche

Riferimenti

I/O a basso livello

_close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen