_sopen_s
, _wsopen_s
Ouvre un fichier pour le partage. Ces versions et ont des améliorations de _sopen
_wsopen
sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT.
Syntaxe
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,
);
Paramètres
pfh
Handle de fichier ou -1 en cas d’erreur.
filename
Nom de fichier.
oflag
Type d'opérations autorisées.
shflag
Type de partage autorisé.
pmode
Paramètre d'autorisation.
Valeur retournée
Une valeur de retour différente de zéro indique une erreur ; dans ce cas, errno
prend l'une des valeurs suivantes.
Valeur errno |
Condition |
---|---|
EACCES |
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. |
EEXIST |
Les indicateurs _O_CREAT et _O_EXCL ont été spécifiés, mais filename existe déjà. |
EINVAL |
Argument oflag , shflag ou pmode non valide, ou bien pfh ou filename était un pointeur null. |
EMFILE |
Plus aucun descripteur de fichier disponible. |
ENOENT |
Fichier ou chemin d’accès introuvable. |
Si un argument non valide est passé à la fonction, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à continuer, errno
est définie EINVAL
sur , et EINVAL
est retournée.
Pour plus d’informations sur ces codes de retour et d’autres codes de retour, consultez , , _sys_errlist
_doserrno
et _sys_nerr
.errno
En cas d’erreur, -1 est retourné ( pfh
sauf s’il pfh
s’agit d’un pointeur Null).
Notes
La fonction _sopen_s
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
. _wsopen_s
est une version à caractères larges de _sopen_s
; l'argument filename
de _wsopen_s
est une chaîne à caractères larges. Sinon,_wsopen_s
et _sopen_s
se comportent de la même façon.
Par défaut, l’état global de cette fonction est limité à l’application. Pour le modifier, consultez l’état global dans le CRT.
Mappages de routines de texte générique
Routine Tchar.h |
_UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tsopen_s |
_sopen_s |
_sopen_s |
_wsopen_s |
L’expression oflag
entière est formée en combinant une ou plusieurs constantes de manifeste, définies dans <fcntl.h>
. Lorsque deux constantes ou plus forment l’argument oflag
, elles sont combinées à l’opérateur OR au niveau du bit ( |
).
oflag constant |
Comportement |
---|---|
_O_APPEND |
Déplace le pointeur de fichier à la fin du fichier avant chaque opération d'écriture. |
_O_BINARY |
Ouvre le fichier en mode binaire (non traduit). (Consultez fopen la description du mode binaire.) |
_O_CREAT |
Crée un fichier et l'ouvre pour l'accès en écriture. N'a aucun effet si le fichier spécifié par filename existe. L'argument pmode est obligatoire quand _O_CREAT est spécifié. |
_O_CREAT | _O_SHORT_LIVED |
Crée un fichier en tant que temporaire et, si possible, ne se vide pas sur le disque. L'argument pmode est obligatoire quand _O_CREAT est spécifié. |
_O_CREAT | _O_TEMPORARY |
Crée un fichier temporaire ; le fichier est supprimé quand le dernier descripteur de fichier est fermé. L'argument pmode est obligatoire quand _O_CREAT est spécifié. Pour conserver le comportement hérité pour la compatibilité des applications, d’autres processus ne sont pas empêchés de supprimer ce fichier. |
_O_CREAT | _O_EXCL |
Retourne une valeur d'erreur s'il existe un fichier spécifié par filename . Applicable uniquement en cas d'utilisation avec _O_CREAT . |
_O_NOINHERIT |
Empêche la création d'un descripteur de fichier partagé. |
_O_RANDOM |
Indique que la mise en cache est optimisée pour, mais non limitée à, l'accès aléatoire à partir du disque. |
_O_RDONLY |
Ouvre un fichier pour l'accès en lecture uniquement. Impossible de spécifier avec _O_RDWR ou _O_WRONLY . |
_O_RDWR |
Ouvre un fichier pour l'accès en lecture et en écriture. Impossible de spécifier avec _O_RDONLY ou _O_WRONLY . |
_O_SEQUENTIAL |
Indique que la mise en cache est optimisée pour, mais non limitée à, l'accès séquentiel à partir du disque. |
_O_TEXT |
Ouvre un fichier en mode texte ANSI (traduit). (Pour plus d’informations, consultez Fichier d’E/S en mode texte et binaire et fopen .) |
_O_TRUNC |
Ouvre un fichier et le tronque à une longueur nulle. Le fichier doit disposer d'une autorisation en écriture. Impossible de spécifier _O_RDONLY avec . _O_TRUNC utilisé avec _O_CREAT ouvre un fichier existant ou crée un fichier. Remarque : l’indicateur _O_TRUNC détruit le contenu du fichier spécifié. |
_O_WRONLY |
Ouvre un fichier pour l'accès en écriture uniquement. Impossible de spécifier avec _O_RDONLY ou _O_RDWR . |
_O_U16TEXT |
Ouvre un fichier en mode Unicode UTF-16. |
_O_U8TEXT |
Ouvre un fichier en mode Unicode UTF-8. |
_O_WTEXT |
Ouvre un fichier en mode Unicode. |
Pour spécifier le mode d'accès au fichier, vous devez spécifier _O_RDONLY
, _O_RDWR
ou _O_WRONLY
. Il n’existe aucune valeur par défaut pour le mode d’accès.
Quand un fichier est ouvert en mode Unicode à l'aide d'_O_WTEXT
, _O_U8TEXT
ou _O_U16TEXT
, les fonctions d'entrée traduisent les données qui sont lues à partir du fichier en données UTF-16 stockées comme 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 comme type wchar_t
. Si le fichier est encodé en UTF-8, les données UTF-16 sont traduites en UTF-8 lorsqu’elles sont écrites. Le contenu encodé en UTF-8 du fichier est traduit en UTF-16 lorsqu’il est lu. Toute tentative de lecture ou d'écriture d'un nombre impair d'octets en mode Unicode provoque une erreur de validation de paramètre . 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. Vous êtes responsable de toute traduction d’encodage requise.
Si _sopen_s
est appelée avec _O_WRONLY | _O_APPEND
(mode Append) et _O_WTEXT
, _O_U16TEXT
ou _O_U8TEXT
, elle tente d'abord d'ouvrir le fichier pour la lecture et l'écriture, de lire la marque BOM, puis de le rouvrir pour l'accès en écriture uniquement. 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.
L’argument shflag
est une expression constante qui se compose de l’une des constantes manifeste suivantes, qui sont définies dans <share.h>
.
shflag constant |
Comportement |
---|---|
_SH_DENYRW |
Refuse l'accès en lecture et en écriture à un fichier. |
_SH_DENYWR |
Refuse l'accès en écriture à un fichier. |
_SH_DENYRD |
Refuse l'accès en lecture à un fichier. |
_SH_DENYNO |
Autorise l'accès en lecture et en écriture. |
L'argument pmode
est toujours requis, ce qui n'est pas le cas dans _sopen
. Lorsque vous spécifiez _O_CREAT
, si le fichier n’existe pas, pmode
spécifie les paramètres d’autorisation du fichier, qui sont définis lorsque le nouveau fichier est fermé la première fois. Sinon, pmode
est ignoré. pmode
est une expression entière qui contient une ou les deux constantes _S_IWRITE
de manifeste et _S_IREAD
, qui sont définies dans <sys\stat.h>
. Lorsque les deux constantes sont fournies, elles sont combinées avec l’opérateur OR au niveau du bit. La signification de pmode
est la suivante.
pmode |
Signification |
---|---|
_S_IREAD |
Lecture autorisée uniquement. |
_S_IWRITE |
Écriture autorisée. (En fait, autorise la lecture et l'écriture.) |
_S_IREAD | _S_IWRITE |
Lecture et écriture autorisées. |
Si l’autorisation d’écriture n’est pas donnée, le fichier est en lecture seule. Dans le système d’exploitation Windows, tous les fichiers sont lisibles ; il n’est pas possible d’accorder une autorisation en écriture seule. Par conséquent, les modes _S_IWRITE
et _S_IREAD | _S_IWRITE
sont équivalents.
_sopen_s
applique le masque d'autorisation de fichier actif à pmode
avant que les autorisations soient définies. (Consultez _umask
.)
Spécifications
Fonction | En-tête requis | En-tête facultatif |
---|---|---|
_sopen_s |
<io.h> |
<fcntl.h> , , <sys\types.h> <sys\stat.h> , ,<share.h> |
_wsopen_s |
<io.h> ou <wchar.h> |
<fcntl.h> , , <sys/types.h> <sys/stat.h> , ,<share.h> |
_sopen_s
et _wsopen_s
sont des extensions Microsoft. Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
Consultez l’exemple pour _locking
.
Voir aussi
E/S de bas niveau
_close
_creat
, _wcreat
fopen
, _wfopen
_fsopen
, _wfsopen
_open
, _wopen