Exporter (0) Imprimer
Développer tout
and
div
eof
not
or
xor
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

_open, _wopen

Ouvre un fichier. Ces fonctions sont déconseillées car des versions plus sécurisées sont disponibles ; consultez _sopen_s, _wsopen_s.

int _open(
   const char *filename,
   int oflag [,
   int pmode] 
);
int _wopen(
   const wchar_t *filename,
   int oflag [,
   int pmode] 
);

filename

Nom du fichier.

oflag

Type d'opérations autorisées.

pmode

Mode d'autorisation.

Chacune de ces fonctions retourne un descripteur de fichier pour le fichier ouvert. Une valeur de retour de -1 indique une erreur, auquel cas errno est fixé à une des valeurs suivantes.

EACCES

A essayé d'ouvrir des fichiers en lecture seule pour l'écriture, le mode de partage de fichiers n'autorise pas les opérations spécifiées, ou le chemin d'accès pointe un dossier.

EEXIST

Les indicateurs _O_CREAT et _O_EXCL sont spécifiés, mais filename existe déjà.

EINVAL

Argument oflag ou pmode non valide.

EMFILE

Plus de descripteurs de fichiers disponibles (trop de fichiers ouverts).

ENOENT

Fichier ou chemin d'accès introuvable.

Pour plus d'informations sur ces codes de retour et autres, consultez _doserrno, errno, _sys_errlist et _sys_nerr.

La fonction _open ouvre le fichier spécifié par filename et prépare le fichier pour la lecture ou l'écriture, comme spécifié par oflag. _wopen est une version à caractères larges de _open; l'argument filename vers _wopen est une chaîne à caractères larges. _wopen et _open se comportent sinon de manière identique.

Mappages de routines de texte générique

Routine Tchar.h

_UNICODE et _MBCS non définis

_MBCS défini

_UNICODE défini

_topen

_open

_open

_wopen

oflag est une expression entière formée d'au moins l'une des constantes manifestes suivantes ou des combinaisons constantes définies dans Fcntl.h.

_O_APPEND

Déplace le pointeur de fichier en fin de fichier avant chaque opération d'écriture.

_O_BINARY

Ouvre le fichier en mode (non traduit) binaire. (Voir fopen pour obtenir une description du mode binaire.)

_O_CREAT

Crée et ouvre un nouveau fichier en écriture. N'a aucun effet si le fichier spécifié par filename existe. L'argument pmode est requis lorsque _O_CREAT est spécifié.

_O_CREAT| _O_SHORT_LIVED

Créez un fichier temporaire et si possible ne le videz pas dans le disque. L'argument pmode est requis lorsque _O_CREAT est spécifié.

_O_CREAT| _O_TEMPORARY

Créez un fichier temporaire ; le fichier est supprimé lorsque le dernier descripteur de fichier est fermé. L'argument pmode est requis lorsque _O_CREAT est spécifié.

_O_CREAT| _O_EXCL

Retourne une valeur d'erreur si le fichier spécifié par filename existe. S'applique uniquement lorsqu'ils sont utilisés 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 en lecture seule ; ne peut pas être spécifié avec _O_RDWR ou _O_WRONLY.

_O_RDWR

Ouvre le fichier pour la lecture et l'écriture ; vous ne pouvez pas spécifier cet indicateur 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 (traduit). (Pour plus d'informations, consultez E/S de fichier en mode texte et binaire et fopen.)

_O_TRUNC

Ouvre un fichier et le tronque à la longueur nulle ; le fichier doit avoir l'autorisation d'écriture. Vous ne pouvez pas spécifier cet indicateur avec _O_RDONLY. _O_TRUNC utilisé avec _O_CREAT ouvre un fichier existant ou crée un nouveau fichier.

Remarque Remarque

L'indicateur _O_TRUNC détruit le contenu du fichier spécifié.

_O_WRONLY

Ouvre le fichier en écriture seule ; ne peut pas être spécifié avec _O_RDONLY ou _O_RDWR.

_O_U16TEXT

Ouvrez le fichier en mode Unicode UTF-16.

_O_U8TEXT

Ouvrez le fichier en mode Unicode UTF-8.

_O_WTEXT

Ouvrez le fichier en mode Unicode.

Pour spécifier le mode d'accès du fichier, vous devez spécifier _O_RDONLY, _O_RDWR, ou _O_WRONLY. Il n'y a pas de valeur par défaut pour le mode d'accès.

Si _O_WTEXT est utilisé pour ouvrir un fichier en lecture, _open lit le début du fichier et vérifie la présence d'une marque d'ordre d'octet (BOM). S'il y a une marque d'ordre d'octet, le fichier est traité comme UTF-8 ou UTF-16LE selon la marque. En l'absence de marque d'ordre d'octet, le fichier est traité comme ANSI. Lorsqu'un fichier est ouvert pour l'écriture en utilisant _O_WTEXT, UTF-16 est utilisé. Si _O_UTF8 est utilisé, le fichier est toujours ouvert en tant que UTF-8 et si _O_UTF16 est utilisé, le fichier est toujours ouvert en tant que UTF-16 indépendamment d'un paramètre ou d'une marque d'ordre d'octet précédent.

Si _open est appelé avec _O_WRONLY|_O_APPEND (mode adjonction) et _O_WTEXT, _O_U16TEXT, ou _O_U8TEXT, il va d'abord ouvrir le fichier en lecture et en écriture, lire la marque d'ordre d'octet, puis rouvrir pour écrire uniquement. Si l'ouverture du fichier pour la lecture et l'écriture échoue, il ouvre le fichier en écriture seule et utilise la valeur par défaut pour le paramètre du mode Unicode.

Lorsque plus de deux constantes manifestes sont utilisées pour former l'argument oflag, les constantes sont combinées avec l'opérateur de bits OR ( | ). Pour une discussion des modes binaire et texte, consultez E/S de fichier du mode texte et binaire.

L'argument pmode est requis uniquement lorsque _O_CREAT est spécifié. Si le fichier existe déjà, pmode est ignoré. Sinon, pmode spécifie les paramètres d'autorisation du fichiers, définis lorsque le fichier est fermé la première fois. _open applique le masque d'autorisation de fichier actuel à pmode avant de définir les autorisations (pour plus d'informations, consultez _umask). pmode est une expression entière contenant une des, ou les deux constantes manifestes suivantes défini dans SYS\Stat.h.

_S_IREAD

Lecture uniquement autorisée.

_S_IWRITE

Écriture autorisée (permet la lecture et l'écriture effective).

_S_IREAD | _S_IWRITE

Lecture et écriture autorisées.

Lorsque les deux constantes sont fournies, elles sont jointes à l'opérateur de bits OR ( | ). Dans Windows NT, tous les fichiers sont lisibles,ainsi l'autorisation en écriture seule n'est pas disponible ; par conséquent les modes _S_IWRITE et _S_IREAD | _S_IWRITE sont équivalents.

Si une valeur différente de ce qui précède est spécifiée pour pmode (même si elle spécifiait un pmode valide dans un autre système d'exploitation) ou une valeur autre que les valeurs autorisées de oflag est spécifié, la fonction génère une assertion en mode débogage et appelle le gestionnaire de paramètre non valide comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, la fonction retourne -1 et définit errno avec la valeur EINVAL.

Routine

En-tête requis

En-tête facultatif

_open

<io.h,>

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

_wopen

<io.h> ou <wchar.h>

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

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Bibliothèques

Toutes les versions des bibliothèques Runtime C.

// 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 );
   }
}

Open succeeded on input file
Open succeeded on output file

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft