Share via


_open, _wopen

Ouvrir un fichier.Ces fonctions sont déconseillées car plus les versions 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] 
);

Paramètres

  • filename
    Nom du fichier.

  • oflag
    Type d'opérations autorisées.

  • pmode
    mode d'autorisation.

Valeur de retour

Chacune de ces fonctions retourne un descripteur de fichier du fichier ouvert.Une valeur de retour de -1 indique une erreur, dans ce cas errno a une des valeurs suivantes.

  • EACCES
    Essayé au fichier en lecture seule ouvert pour écriture, le mode de partage de fichiers ne permet pas d'opérations spécifiées, ou le chemin d'accès donné est répertoire.

  • EEXIST
    _O_CREAT et _O_EXCL signale spécifié, mais filename existe déjà.

  • EINVAL
    oflag valide ou argument d' pmode .

  • EMFILE
    Pas plus de descripteurs de fichiers disponibles (trop de fichiers ouverts).

  • ENOENT
    Fichier ou un chemin d'accès introuvable.

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

Notes

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

mappages de routines de texte générique

routine de 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'un ou plusieurs des constantes manifestes suivantes ou des combinaisons constantes de Fcntl.h.

  • _O_APPEND
    Déplace le pointeur de fichier à la fin de le fichier avant chaque opération d'écriture.

  • _O_BINARY
    ouvre le fichier dans le mode (non traduit) binaire.(Consultez fopen pour une description du mode binaire.)

  • _O_CREAT
    Crée et ouvre un nouveau fichier pour l'écriture.N'a pas d'effet si le fichier spécifié par filename existe.l'argument d'pmode est requis lorsque _O_CREAT est spécifié.

  • _O_CREAT| _O_SHORT_LIVED
    Créez un fichier comme temporaire et si possible ne le vide pas sur le disque.l'argument d'pmode est requis lorsque _O_CREAT est spécifié.

  • _O_CREAT| _O_TEMPORARY
    Créez un fichier comme temporaire ; le fichier est supprimé lorsque le dernier descripteur de fichier est fermé.l'argument d'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 en cas de utilisation avec _O_CREAT.

  • _O_NOINHERIT
    Empêché la création d'un descripteur de fichier partagé.

  • _O_RANDOM
    Spécifie que la mise en cache est optimisé pour, mais pas un niveau, l'accès aléatoire à partir de le disque.

  • _O_RDONLY
    Ouvre un fichier pour lire uniquement ; 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 cette balise avec _O_RDONLY ou _O_WRONLY.

  • _O_SEQUENTIAL
    Spécifie que la mise en cache est optimisé pour, mais pas un niveau, l'accès séquentiel à partir de le disque.

  • _O_TEXT
    Ouvre un fichier en mode de texte (traduits).(Pour plus d'informations, consultez E/S de fichier du mode de texte et de binaire et le fopen.)

  • _O_TRUNC
    Ouvrir un fichier et le tronque à la longueur nulle ; le fichier doit avoir l'autorisation en écriture.vous ne pouvez pas spécifier cette balise avec _O_RDONLY._O_TRUNC elle est utilisée avec _O_CREAT ouvre un fichier existant ou crée un fichier.

    [!REMARQUE]

    la balise d' _O_TRUNC détruit le contenu du fichier spécifié.

  • _O_WRONLY
    Ouvre le fichier pour entrer uniquement ; ne peut pas être spécifié avec _O_RDONLY ou _O_RDWR.

  • _O_U16TEXT
    Ouvrez le mode UTF-16 de fichier au format Unicode.

  • _O_U8TEXT
    Ouvrez le mode UTF-8 de fichier au format Unicode.

  • _O_WTEXT
    Ouvrez le mode de fichier au format 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.

Si _O_WTEXT est utilisé pour ouvrir un fichier pour lire, _open lit le début du fichier et le contrôle d'une marque d'ordre d' (BOM)octet.S'il existe des BOM, le fichier est traité comme UTF-8 ou UTF-16LE selon le BOM.Si aucun BOM n'est présent, le fichier est traité comme étant ANSI.Lorsqu'un fichier est ouvert pour écriture à l'aide de _O_WTEXT, UTF-16 est utilisé.Si _O_UTF8 est utilisé, le fichier est toujours ouvert au format UTF-8 et si _O_UTF16 est utilisé, le fichier est toujours ouvert en UTF-16 indépendamment de tout paramètre ou marque d'ordre d'octet précédent.

Si _open est appelé avec _O_WRONLY|_O_APPEND (mode adjacent) et _O_WTEXT, _O_U16TEXT, ou _O_U8TEXT, il essaie d'abord d'ouvrir le fichier pour la lecture et en écriture, lisez le BOM, puis rouvrez -le pour entrer uniquement.Si l'ouverture du fichier pour les échecs de lecture et d'écriture, il ouvre le fichier pour entrer uniquement et utilise la valeur par défaut pour définir en mode Unicode.

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

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

  • _S_IREAD
    Lire uniquement autorisé.

  • _S_IWRITE
    Écriture autorisée (permet efficacement à lire et écrire).

  • _S_IREAD | _S_IWRITE
    lecture et écriture autorisées.

Lorsque les deux constantes sont données, elles sont attachées avec l'opérateur de bits OR ( |).Sous Windows NT, tous les fichiers sont lisibles, donc l'autorisation en écriture seule est pas disponible ; pour que les modes _S_IWRITE et _S_IREAD | _S_IWRITE sont identiques.

Si une valeur autre que le ci-dessus est spécifiée pour pmode (même si elle assigne pmode valide dans un autre système d'exploitation) ou une valeur autre que les valeurs autorisées d' 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 des paramètres.Si est autorisé à l'exécution de se poursuivre, la fonction retourne -1 et définit errno à EINVAL.

Configuration requise

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 de compatibilité, consultez compatibilité dans l'introduction.

bibliothèques

toutes les versions de Bibliothèques runtime C.

Exemple

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

Sortie

Open succeeded on input file
Open succeeded on output file

Équivalent .NET Framework

Voir aussi

Référence

E/S de bas niveau

_chmod, _wchmod

_close

_create, _wcreat

_dup, _dup2

le fopen, _wfopen

_sopen, _wsopen