Section courante

A propos

Section administrative du site

OPEN

Ouvre
  sys/stat.h
fcntl.h

Syntaxe

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

Paramètres

Nom Description
pathname Ce paramètre permet d'indiquer le nom du fichier.
oflag Ce paramètre permet d'indiquer le drapeau de mode d'ouverture (les constantes peuvent être combiné avec un caractère «|» sauf pour O_RDONLY, O_WRONLY et O_RDWR) :
Constante Description
O_RDONLY Cette constante permet d'indiquer qu'il faut ouvrir le fichier en mode lecture seulement.
O_WRONLY Cette constante permet d'indiquer qu'il faut ouvrir le fichier en mode écriture seulement.
O_RDWR Cette constante permet d'indiquer qu'il faut ouvrir le fichier en mode lecture et écriture.
O_APPEND Cette constante permet d'indiquer que le déplacement du fichier doit être défini à la fin du fichier avant chaque écriture.
O_CREAT Cette constante permet de créer le fichier.
O_DSYNC Cette constante permet d'indiquer que les opérations d'entrée/sortie d'écriture dans le descripteur de fichier doivent se terminer comme défini par l'achèvement de l'intégrité des données d'entrée/sortie synchronisées.
O_EXCL Cette constante permet d'indiquer que si le fichier existe, il ne peut pas être créé et qu'il doit retourner un erreur dans errno.
O_NOCTTY Cette constante permet d'indiquer que si l'ensemble et le chemin de fichier identifient un terminal, la fonction open() ne doit pas faire en sorte que le terminal devienne le terminal de contrôle du processus.
O_NONBLOCK Cette constante permet d'indiquer que s'il est en mode lecture qu'il doit retourné sans délai et si elle est écriture, il doit bloquer le processus léger appelant jusqu'à ce qu'un processus léger ouvre le fichier en écriture.
O_RSYNC Cette constante permet d'indiquer que les opérations d'entrée/sortie de lecture sur le descripteur de fichier doivent se terminer au même niveau d'intégrité que celui spécifié par les drapeaux O_DSYNC et O_SYNC.
O_SYNC Cette constante permet d'indiquer que les opérations d'entrée/sortie en écriture sur le descripteur de fichier doivent se terminer comme défini par l'achèvement de l'intégrité du fichier d'entrée/sortie synchronisé.
O_TRUNC Cette constante permet d'indiquer que le fichier doit avoir la taille de 0 octets et donc que les données sont effacé s'il existe et a été ouvert avec succès par O_RDWR ou O_WRONLY.
O_CLOEXEC Cette constante permet d'activer le drapeau close-on-exec pour le nouveau descripteur de fichier. Cette constante est disponible à partir du noyau Linux 2.6.23.
mode Ce paramètre permet d'indiquer les permissions :
Constante Valeur Description
S_IRWXU 00700 Cette valeur permet d'indiquer que l'utilisateur a la permission en lecture, écriture et d'exécution.
S_IRUSR 00400 Cette valeur permet d'indiquer que l'utilisateur a la permission en lecture.
S_IWUSR 00200 Cette valeur permet d'indiquer que l'utilisateur a la permission en écriture.
S_IXUSR 00100 Cette valeur permet d'indiquer que l'utilisateur a la permission en exécution.
S_IRWXG 00070 Cette valeur permet d'indiquer que le groupe a la permission en lecture, écriture et exécution.
S_IRGRP 00040 Cette valeur permet d'indiquer que le groupe a la permission en lecture.
S_IRGRP 00020 Cette valeur permet d'indiquer que le groupe a la permission en écriture.
S_IXGRP 00010 Cette valeur permet d'indiquer que le groupe a la permission en exécution.
S_IRWXO 00007 Cette valeur permet d'indiquer que tous ont la permission en lecture, écriture et d'exécution.
S_IROTH 00004 Cette valeur permet d'indiquer que tous ont la permission en lecture.
S_IWOTH 00002 Cette valeur permet d'indiquer que tous ont la permission en écriture.
S_IXOTH 00001 Cette valeur permet d'indiquer que tous ont la permission en exécution.

Retour

Valeur Description
-1 Cette valeur permet d'indiquer qu'une erreur s'est produite et la variable «errno» contiendra l'erreur.
valeur entière != -1 Ces valeurs permettent d'indiquer qu'un descripteur pour le socket est accepté.

Description

Cette fonction permet d'effectuer l'ouverture d'un fichier en lecture et écriture.

Remarques

Exemples

L'exemple suivant permet de créer le fichier «.htaccess» dans l'emplacement courant :

  1. #include <fcntl.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. void main() {
  6.      int Handle;
  7.      if ((Handle = open(".htaccess", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) == -1) {
  8.           perror("Impossible de créer le fichier\n"); 
  9.           exit(1);
  10.      } else {
  11.           puts("Traitement..."); 
  12.           close(Handle);
  13.           puts("FIN"); 
  14.      }
  15. }

L'exemple suivant permet de lire le fichier «.htaccess» existant dans l'emplacement courant :

  1. #include <fcntl.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. void main() {
  6.      int Handle;
  7.      if ((Handle = open(".htaccess", O_RDONLY)) == -1) {
  8.           perror("Impossible d'ouvrir le fichier en lecture\n"); 
  9.           exit(1);
  10.      } else {
  11.           puts("Traitement..."); 
  12.           close(Handle);
  13.           puts("FIN"); 
  14.      }
  15. }

L'exemple suivant permet d'ouvrir le même un certain nombre de fois :

  1. #include <fcntl.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. #define MAX_FILES 10000
  6.  
  7. void main() {
  8.      int Handle[MAX_FILES];
  9.      int I;
  10.      puts("OUVRE LE FICHIER UN CERTAIN NOMBRE DE FOIS...");
  11.      for(I = 1;I < MAX_FILES; I++) {
  12.           if ((Handle[I] = open(".htaccess", O_RDONLY)) == -1) {
  13.                printf("Tentative %i d'ouverture de fichier\n",I); 
  14.                exit(1);
  15.           }
  16.      }
  17.      puts("FERME LES FICHIERS...");
  18.      for(I = 1;I < MAX_FILES; I++) {
  19.           close(Handle[I]);
  20.      }
  21.      puts("FIN"); 
  22. }

si vous avez une limite de 1021 fichiers par processus, vous obtiendrez donc le résultat suivant :

OUVRE LE FICHIER UN CERTAIN NOMBRE DE FOIS...
Tentative 1022 d'ouverture de fichier

Voir également

Langage de programmation - Perl - Référence procédures et fonctions - open

Dernière mise à jour : Vendredi, le 6 avril 2018