Condividi tramite


_sopen_s, _wsopen_s

Apre un file per la condivisione.Queste sono versioni di _sopen e _wsopen con miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

errno_t _sopen_s(
   int* pfh,
   const char *filename,
   int oflag,
   int shflag,
   int pmode
);
errno_t _wsopen_s(
   int* pfh,
   const wchar_t *filename,
   int oflag,
   int shflag,
   int pmode,
);

Parametri

  • [out] pfh
    L'handle di file, o -1 in caso di errore.

  • [in] filename
    Nome file.

  • [in] oflag
    Tipo di operazioni consentite.

  • [in] shflag
    Tipo di condivisione consentita.

  • [in] pmode
    Impostazione di autorizzazione.

Valore restituito

Un valore restituito diverso da zero indica un errore, nel qual caso errno viene impostato su uno dei seguenti valori.

  • 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
    oflag, shflag, opmode sono argomenti non validi, o pfh o filename sono puntatori null.

  • EMFILE
    Non sono disponibili ulteriori descrittori di file.

  • ENOENT
    File o percorso non trovato.

Se viene passato alla funzione un argomento non valido, viene richiamato il gestore di parametro non valido, come descritto in Convalida dei parametri.Se l'esecuzione può continuare, errno è impostato su EINVAL e viene restituito EINVAL.

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

In caso di errore, verrà restituito -1 da pfh (a meno che pfh non sia un puntatore null).

Note

La funzione _sopen_s apre il file specificato da filename e prepara il file per la lettura o la scrittura condivisa, come definito da oflag e shflag._wsopen_s è una versione a caratteri estesi di _sopen_s; l'argomento filename in _wsopen_s è una stringa di caratteri estesi._wsopen_s e _sopen_s 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

_tsopen_s

_sopen_s

_sopen_s

_wsopen_s

L'espressione di valori integer oflag è costituita dalla combinazione di una o più costanti manifesto, definite nel file Fcntl.h.Quando due o più costanti costituiscono l'argomento oflag, vengono combinati 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 ed apre un nuovo file in scrittura.Non ha effetto se il file specificato da filename esiste.

  • _O_CREAT| _O_SHORT_LIVED
    Crea un file come temporaneo e se possibile non lo scarica su disco.

  • _O_CREAT| _O_TEMPORARY
    Crea un file come temporaneo; il file viene eliminato quando l'ultimo descrittore del file viene chiuso.

  • _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 l'accesso sul disco principalmente casuale.

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

  • _O_RDWR
    Apre un file in 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 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 un 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 _sopen_s 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.

L'argomento shflag è un'espressione costante costituita da una delle seguenti costanti manifesto, 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 è sempre necessario, a differenza di _sopen.Quando si specifica _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_s applica la maschera corrente di autorizzazione file a pmode prima di impostare le autorizzazioni (vedere _umask).

Requisiti

Routine

Intestazione obbligatoria

Intestazione facoltativa

_sopen_s

<io.h>

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

_wsopen_s

<io.h> o <wchar.h>

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

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

Esempio

Vedere l'esempio relativo a _locking.

Vedere anche

Riferimenti

L'I/O di basso livello

_close

_create, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen