_sopen, _wsopen_sopen, _wsopen

Ouvre un fichier pour le partage.Opens a file for sharing. Des versions plus sécurisées de ces fonctions sont disponibles : consultez _sopen_s, _wsopen_s.More secure versions of these functions are available: see _sopen_s, _wsopen_s.

SyntaxeSyntax

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

ParamètresParameters

filenamefilename
Nom du fichier.File name.

oflagoflag
Type d'opérations autorisées.The kind of operations allowed.

shflagshflag
Type de partage autorisé.The kind of sharing allowed.

pmodepmode
Paramètre d'autorisation.Permission setting.

Valeur de retourReturn Value

Chacune de ces fonctions retourne un descripteur de fichier pour le fichier ouvert.Each of these functions returns a file descriptor for the opened file.

Si filename ou Oflag est un pointeur null , ou si Oflag ou shflag ne figure pas dans une plage de valeurs valide, le gestionnaire de paramètre non valide est appelé, comme décrit dans validation de paramètre.If filename or oflag is a NULL pointer, or if oflag or shflag is not within a valid range of values, the invalid parameter handler is invoked, as described in Parameter Validation. Si l’exécution est autorisée à se poursuivre, ces fonctions retournent-1 et attribuent à errno l’une des valeurs suivantes.If execution is allowed to continue, these functions return -1 and set errno to one of the following values.

Valeur de la variable errnoerrno value ConditionCondition
EACCESEACCES Le chemin d'accès donné est un répertoire, ou le fichier est en lecture seule, mais une opération de type « ouvert en écriture » a été tentée.The given path is a directory, or the file is read-only, but an open-for-writing operation was attempted.
EEXISTEEXIST Les indicateurs _O_CREAT et _O_EXCL ont été spécifiés, mais le nom de fichier existe déjà._O_CREAT and _O_EXCL flags were specified, but filename already exists.
EINVALEINVAL Argument Oflag ou shflag non valide.Invalid oflag or shflag argument.
EMFILEEMFILE Aucun autre descripteur de fichier n'est disponible.No more file descriptors are available.
ENOENTENOENT Fichier ou chemin d'accès introuvable.File or path is not found.

Pour plus d'informations sur ces codes de retour et autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.For more information about these and other return codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

NotesRemarks

La fonction _sopen ouvre le fichier spécifié par filename et prépare le fichier pour la lecture ou l’écriture partagée, comme défini par Oflag et shflag.The _sopen function opens the file specified by filename and prepares the file for shared reading or writing, as defined by oflag and shflag. _wsopen est une version à caractères larges de _sopen; l’argument filename de _wsopen est une chaîne de caractères larges._wsopen is a wide-character version of _sopen; the filename argument to _wsopen is a wide-character string. dans le cas contraire, _wsopen et _sopen se comportent de la même façon._wsopen and _sopen behave identically otherwise.

Mappages de routines de texte génériqueGeneric-Text Routine Mappings

Routine Tchar.hTchar.h routine _UNICODE et _MBCS non définis_UNICODE and _MBCS not defined _MBCS défini_MBCS defined _UNICODE défini_UNICODE defined
_tsopen_tsopen _sopen_sopen _sopen_sopen _wsopen_wsopen

L’expression entière Oflag est formée en combinant une ou plusieurs des constantes manifestes suivantes, qui sont définies dans <fcntl. h >.The integer expression oflag is formed by combining one or more of the following manifest constants, which are defined in <fcntl.h>. Quand plusieurs constantes forment l’argument Oflag, elles sont combinées avec l’opérateur or au niveau du bit | ().When two or more constants form the argument oflag, they are combined with the bitwise-OR operator ( | ).

Oflag constante)oflag constant ComportementBehavior
_O_APPEND_O_APPEND Déplace le pointeur de fichier à la fin du fichier avant chaque opération d'écriture.Moves the file pointer to the end of the file before every write operation.
_O_BINARY_O_BINARY Ouvre le fichier en mode binaire (non traduit).Opens the file in binary (untranslated) mode. (Pour obtenir une description du mode binaire, consultez fopen.)(See fopen for a description of binary mode.)
_O_CREAT_O_CREAT Crée un fichier et l'ouvre pour l'accès en écriture.Creates a file and opens it for writing. N’a aucun effet si le fichier spécifié par filename existe.Has no effect if the file specified by filename exists. L’argument PMODE est obligatoire lorsque _O_CREAT est spécifié.The pmode argument is required when _O_CREAT is specified.
_O_CREAT | _O_SHORT_LIVED_O_CREAT | _O_SHORT_LIVED Crée un fichier temporaire et, dans la mesure du possible, n'effectue pas de vidage sur disque.Creates a file as temporary and if possible does not flush to disk. L’argument PMODE est obligatoire lorsque _O_CREAT est spécifié.The pmode argument is required when _O_CREAT is specified.
_O_CREAT | _O_TEMPORARY_O_CREAT | _O_TEMPORARY Crée un fichier temporaire ; le fichier est supprimé quand le dernier descripteur de fichier est fermé.Creates a file as temporary; the file is deleted when the last file descriptor is closed. L’argument PMODE est obligatoire lorsque _O_CREAT est spécifié.The pmode argument is required when _O_CREAT is specified.
_O_CREAT | _O_EXCL_O_CREAT | _O_EXCL Retourne une valeur d’erreur s’il existe un fichier spécifié par filename .Returns an error value if a file specified by filename exists. S’applique uniquement lorsqu’il est utilisé avec _O_CREAT.Applies only when used with _O_CREAT.
_O_NOINHERIT_O_NOINHERIT Empêche la création d'un descripteur de fichier partagé.Prevents creation of a shared file descriptor.
_O_RANDOM_O_RANDOM Indique que la mise en cache est optimisée pour, mais non limitée à, l'accès aléatoire à partir du disque.Specifies that caching is optimized for, but not restricted to, random access from disk.
_O_RDONLY_O_RDONLY Ouvre un fichier pour l'accès en lecture uniquement.Opens a file for reading only. Ne peut pas être spécifié avec _O_RDWR ou _O_WRONLY.Cannot be specified with _O_RDWR or _O_WRONLY.
_O_RDWR_O_RDWR Ouvre un fichier pour l'accès en lecture et en écriture.Opens a file for both reading and writing. Ne peut pas être spécifié avec _O_RDONLY ou _O_WRONLY.Cannot be specified with _O_RDONLY or _O_WRONLY.
_O_SEQUENTIAL_O_SEQUENTIAL Indique que la mise en cache est optimisée pour, mais non limitée à, l'accès séquentiel à partir du disque.Specifies that caching is optimized for, but not restricted to, sequential access from disk.
_O_TEXT_O_TEXT Ouvre un fichier en mode texte (traduit).Opens a file in text (translated) mode. (Pour plus d’informations, consultez E/S de fichier en mode texte et binaire et fopen.)(For more information, see Text and Binary Mode File I/O and fopen.)
_O_TRUNC_O_TRUNC Ouvre un fichier et le tronque à une longueur nulle. Le fichier doit disposer d'une autorisation en écriture.Opens a file and truncates it to zero length; the file must have write permission. Ne peut pas être spécifié avec _O_RDONLY.Cannot be specified with _O_RDONLY. _O_TRUNC utilisé avec _O_CREAT ouvre un fichier existant ou crée un fichier._O_TRUNC used with _O_CREAT opens an existing file or creates a file. Remarque : L’indicateur _O_TRUNC détruit le contenu du fichier spécifié.Note: The _O_TRUNC flag destroys the contents of the specified file.
_O_WRONLY_O_WRONLY Ouvre un fichier pour l'accès en écriture uniquement.Opens a file for writing only. Ne peut pas être spécifié avec _O_RDONLY ou _O_RDWR.Cannot be specified with _O_RDONLY or _O_RDWR.
_O_U16TEXT_O_U16TEXT Ouvre un fichier en mode Unicode UTF-16.Opens a file in Unicode UTF-16 mode.
_O_U8TEXT_O_U8TEXT Ouvre un fichier en mode Unicode UTF-8.Opens a file in Unicode UTF-8 mode.
_O_WTEXT_O_WTEXT Ouvre un fichier en mode Unicode.Opens a file in Unicode mode.

Pour spécifier le mode d’accès au fichier, vous devez spécifier _O_RDONLY, _O_RDWRou _O_WRONLY.To specify the file access mode, you must specify either _O_RDONLY, _O_RDWR, or _O_WRONLY. Il n'y a aucune valeur par défaut pour le mode d'accès.There is no default value for the access mode.

Lorsqu’un fichier est ouvert en mode Unicode à l’aide de _O_WTEXT, _O_U8TEXTou _O_U16TEXT, les fonctions d’entrée traduisent les données lues à partir du fichier en données UTF-16 stockées en tant que type wchar_t.When a file is opened in Unicode mode by using _O_WTEXT, _O_U8TEXT, or _O_U16TEXT, input functions translate the data that's read from the file into UTF-16 data stored as type wchar_t. Les fonctions qui écrivent dans un fichier ouvert en mode Unicode attendent des mémoires tampons qui contiennent des données UTF-16 stockées en tant que type wchar_t.Functions that write to a file opened in Unicode mode expect buffers that contain UTF-16 data stored as type wchar_t. Si le fichier est encodé au format UTF-8, les données UTF-16 sont traduites en UTF-8 lors de leur écriture et le contenu du fichier encodé au format UTF-8 est traduit en UTF-16 lorsqu'il est lu.If the file is encoded as UTF-8, then UTF-16 data is translated into UTF-8 when it is written, and the file's UTF-8-encoded content is translated into UTF-16 when it is read. Toute tentative de lecture ou d'écriture d'une quantité impaire d'octets en mode Unicode provoque une erreur de validation de paramètre.An attempt to read or write an odd number of bytes in Unicode mode causes a parameter validation error. Pour lire ou écrire des données stockées dans votre programme au format UTF-8, utilisez un mode de fichier binaire ou texte au lieu d'un mode Unicode.To read or write data that's stored in your program as UTF-8, use a text or binary file mode instead of a Unicode mode. Vous êtes responsable de toute traduction d'encodage nécessaire.You are responsible for any required encoding translation.

Si _sopen est appelé avec _O_WRONLY | _O_APPEND (mode Append) et _O_WTEXT, _O_U16TEXTou _O_U8TEXT, il tente d’abord d’ouvrir le fichier pour la lecture et l’écriture, de lire la nomenclature, puis de la rouvrir pour écriture uniquement.If _sopen is called with _O_WRONLY | _O_APPEND (append mode) and _O_WTEXT, _O_U16TEXT, or _O_U8TEXT, it first tries to open the file for reading and writing, read the BOM, then reopen it for writing only. Si l'ouverture du fichier pour l'accès en lecture et en écriture échoue, elle ouvre le fichier pour l'accès en écriture uniquement et utilise la valeur par défaut pour le paramètre de mode Unicode.If opening the file for reading and writing fails, it opens the file for writing only and uses the default value for the Unicode mode setting.

L’argument shflag est une expression constante constituée de l’une des constantes manifestes suivantes, qui sont définies <dans share. h >.The argument shflag is a constant expression consisting of one of the following manifest constants, which are defined in <share.h>.

shflag constante)shflag constant ComportementBehavior
_SH_DENYRW_SH_DENYRW Refuse l'accès en lecture et en écriture à un fichier.Denies read and write access to a file.
_SH_DENYWR_SH_DENYWR Refuse l'accès en écriture à un fichier.Denies write access to a file.
_SH_DENYRD_SH_DENYRD Refuse l'accès en lecture à un fichier.Denies read access to a file.
_SH_DENYNO_SH_DENYNO Autorise l'accès en lecture et en écriture.Permits read and write access.

L’argument PMODE est requis uniquement lorsque _O_CREAT est spécifié.The pmode argument is required only when _O_CREAT is specified. Si le fichier n’existe pas, PMODE spécifie les paramètres d’autorisation du fichier, qui sont définis quand le nouveau fichier est fermé la première fois.If the file does not exist, pmode specifies the file's permission settings, which are set when the new file is closed the first time. Sinon, PMODE est ignoré.Otherwise, pmode is ignored. PMODE est une expression entière qui contient l’une des constantes manifestes _S_IWRITE et _S_IREAD, ou les deux, qui <sont définies dans sys\stat.h >.pmode is an integer expression that contains one or both of the manifest constants _S_IWRITE and _S_IREAD, which are defined in <sys\stat.h>. Quand les deux constantes sont données, elles sont combinées avec l'opérateur OR au niveau du bit.When both constants are given, they are combined with the bitwise-OR operator. La signification de PMODE est la suivante.The meaning of pmode is as follows.

pmodepmode SignificationMeaning
_S_IREAD_S_IREAD Lecture autorisée uniquement.Only reading permitted.
_S_IWRITE_S_IWRITE Écriture autorisée.Writing permitted. (En fait, autorise la lecture et l'écriture.)(In effect, permits reading and writing.)
_S_IREAD | _S_IWRITE_S_IREAD | _S_IWRITE Lecture et écriture autorisées.Reading and writing permitted.

Si l'autorisation d'écriture n'est pas accordée, le fichier est en lecture seule.If write permission is not given, the file is read-only. Dans le système d'exploitation Windows, tous les fichiers sont lisibles ; il est impossible d'accorder une autorisation en écriture seule.In the Windows operating system, all files are readable; it is not possible to give write-only permission. Par conséquent, les modes _S_IWRITE et _S_IREAD | _S_IWRITE sont équivalents.Therefore, the modes _S_IWRITE and _S_IREAD | _S_IWRITE are equivalent.

_sopen applique le masque d’autorisation de fichier actuel à PMODE avant que les autorisations soient définies._sopen applies the current file-permission mask to pmode before the permissions are set. (Voir _umask.)(See _umask.)

Configuration requiseRequirements

RoutineRoutine En-tête requisRequired header En-tête facultatifOptional header
_sopen_sopen <io.h><io.h> <fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h><fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h>
_wsopen_wsopen <io.h> ou <wchar.h><io.h> or <wchar.h> <fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h><fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.For more compatibility information, see Compatibility.

ExempleExample

Consultez l’exemple relatif à _locking.See the example for _locking.

Voir aussiSee also

E/S de bas niveauLow-Level I/O
_close_close
_creat, _wcreat_creat, _wcreat
fopen, _wfopenfopen, _wfopen
_fsopen, _wfsopen_fsopen, _wfsopen
_open, _wopen_open, _wopen