Loading

NOM

       open,  creat  -  Ouvrir  ou  créer  éventuellement  un  fichier  ou  un
       périphérique

SYNOPSIS

       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

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

       int creat(const char *pathname, mode_t mode);

       Étant  donné  le  chemin  pathname  d’un  fichier,  open()  renvoie  un
       descripteur de fichier (petit entier positif ou nul) qui pourra ensuite
       être utilisé dans d’autres appels système (read(2), write(2), lseek(2),
       fcntl(2),  etc.). Le descripteur de fichier renvoyé par un appel réussi
       sera le plus petit descripteur de fichier non actuellement  ouvert  par
       le processus.

       Par défaut, le nouveau descripteur de fichier est configuré pour rester
       ouvert après un appel à execve(2) (son attribut FD_CLOEXEC décrit  dans
       fcntl(2) est initialement désactivé). L’attribut O_CLOEXEC spécifique à
       Linux et décrit ci-dessous  permet  de  modifier  ce  comportement  par
       défaut. La position dans le fichier est fixée au début du fichier (voir
       lseek(2)).

       Un appel à open() crée une nouvelle description de fichier ouvert,  une
       entrée  dans  la  table  de  fichiers  ouverts du système. Cette entrée
       enregistre la position dans le  fichier  et  les  attributs  d’état  du
       fichier   (modifiables   par   l’opération  F_SETFL  de  fcntl(2)).  Un
       descripteur de fichier est une référence à l’une de ces entrées ; cette
       référence  n’est  pas  modifiée  si  pathname  est  ensuite supprimé ou
       modifié pour correspondre à un autre fichier. La  nouvelle  description
       de   fichier  ouvert  n’est  initialement  partagée  avec  aucun  autre
       processus, mais ce partage peut apparaître après un fork(2).

       Le paramètre flags est l’un des éléments O_RDONLY, O_WRONLY  ou  O_RDWR
       qui  réclament  respectivement l’ouverture du fichier en lecture seule,
       écriture seule, ou lecture-écriture.

       De plus, zéro ou plus d’attributs de création de fichier et d’attributs
       d’état de fichier peuvent être spécifiés dans flags avec un OU binaire.
       Les attributs de création de fichier sont O_CREAT, O_EXCL, O_NOCTTY  et
       O_TRUNC. Les attributs d’état de fichier sont tous les autres attributs
       listés ci‐dessous. La distinction entre ces deux groupes  est  que  les
       attributs  d’état  de  fichier  peuvent être lus et (dans certains cas)
       modifiés avec fcntl(2). La liste complète des attributs de création  et
       d’état de fichier est la suivante :

       O_APPEND
              Le  fichier est ouvert en mode « ajout ». Initialement, et avant
              chaque write(2), la tête de lecture/écriture est placée à la fin
              du fichier comme avec lseek(2). Il y a un risque d’endommager le
              fichier lorsque O_APPEND est utilisé, sur un système de fichiers
              NFS,  si  plusieurs  processus  tentent  d’ajouter  des  données
              simultanément au même fichier. Ceci est dû au fait  que  NFS  ne
              supporte  pas  l’opération  d’ajout  de données dans un fichier,
              aussi le noyau du client est  obligé  de  la  simuler,  avec  un
              risque de concurrence des tâches.

       O_ASYNC
              Déclencher  un  signal  (SIGIO par défaut, mais peut être changé
              via  fcntl(2))  lorsque  la  lecture  ou  l’écriture  deviennent
              possibles  sur  ce descripteur. Ceci n’est possible que pour les
              terminaux, pseudo-terminaux, sockets et (depuis Linux 2.6) tubes
              et FIFO. Voir fcntl(2) pour plus de détails.

       O_CLOEXEC (Depuis Linux 2.6.23)
              Activer l’attribut « close-on-exec » pour le nouveau descripteur
              de  fichier.  Spécifier  cet  attribut  permet  à  un  programme
              d’éviter des opérations supplémentaires F_SETFD de fcntl(2) pour
              positionner l’attribut FD_CLOEXEC. De plus, l’utilisation de cet
              attribut  est essentielle dans certains programmes multithreadés
              puisque l’utilisation d’une opération F_SETFD de  fcntl(2)  pour
              positionner  l’attribut FD_CLOEXEC ne suffit pas pour éviter les
              conditions de concurrence lorsqu’un thread ouvre un  descripteur
              de  fichier en même temps qu’un autre thread effectue un fork(2)
              plus un execve(2).

       O_CREAT
              Créer le fichier s’il  n’existe  pas.  Le  possesseur  (UID)  du
              fichier  est  renseigné  avec  l’UID  effectif  du processus. Le
              groupe propriétaire (GID) du fichier  est  le  GID  effectif  du
              processus ou le GID du répertoire parent (ceci dépend du système
              de fichiers, des options  de  montage,  du  mode  du  répertoire
              parent,  etc.) Voir par exemple les options de montage bsdgroups
              et sysvgroups décrites dans la page mount(8)).

              Le paramètre mode indique  les  permissions  à  utiliser  si  un
              nouveau  fichier  est  créé. Ce paramètre doit être fourni quand
              O_CREAT est spécifié dans  les  flags ;  si  O_CREAT  n’est  pas
              précisé,  mode  est  ignoré.  Les  permissions  effectives  sont
              modifiées par  le  umask  du  processus :  la  véritable  valeur
              utilisée  est  (mode & ~umask).  Notez que ce mode ne s’applique
              qu’aux accès ultérieurs au fichier  nouvellement  créé.  L’appel
              open()  qui  crée  un  fichier dont le mode est en lecture seule
              fournira quand même un descripteur  de  fichier  en  lecture  et
              écriture.

              Les  constantes  symboliques  suivantes  sont  disponibles  pour
              mode :

              S_IRWXU  00700 L’utilisateur (propriétaire  du  fichier)  a  les
                       autorisations de lecture, écriture, exécution.

              S_IRUSR  00400 L’utilisateur a l’autorisation de lecture.

              S_IWUSR  00200 L’utilisateur a l’autorisation d’écriture.

              S_IXUSR  00100 L’utilisateur a l’autorisation d’exécution.

              S_IRWXG  00070   Le  groupe  a  les  autorisations  de  lecture,
                       écriture, exécution.

              S_IRGRP  00040 Le groupe a l’autorisation de lecture.

              S_IWGRP  00020 Le groupe a l’autorisation d’écriture.

              S_IXGRP  00010 Le groupe a l’autorisation d’exécution.

              S_IRWXO  00007 Tout le monde a  les  autorisations  de  lecture,
                       écriture, exécution.

              S_IROTH  00004 Tout le monde a l’autorisation de lecture.

              S_IWOTH  00002 Tout le monde a l’autorisation d’écriture.

              S_IXOTH  00001 Tout le monde a l’autorisation d’exécution.

       O_DIRECT (Depuis Linux 2.4.10)
              Essayer  de minimiser les effets du cache d’entrée-sortie sur ce
              fichier. Ceci dégradera en général les  performances,  mais  est
              utilisé  dans des situations spéciales, lorsque les applications
              ont leur propres caches. L’ajout du drapeau  O_DIRECT  fait  que
              les  entrées-sorties  sont synchrones ; en réalité un effort est
              fait pour rendre le transfert synchrone mais cela ne done pas la
              garantie  fournie  par  le  drapeau  O_SYNC  que  les données et
              méta-données sont transférées. Pour garantir des entrées-sorties
              synchrones,  le  drapeau  O_SYNC  doit  être  utilisé en plus du
              drapeau O_DIRECT. Consultez la section NOTES ci-dessous.

              Une interface à la sémantique similaire  (mais  dépréciée)  pour
              les périphériques de type bloc est décrite à la page raw(8).

       O_DIRECTORY
              Si  pathname  n’est  pas  un répertoire, l’ouverture échoue. Cet
              attribut est spécifique à Linux et fut ajouté  dans  la  version
              2.1.126 du noyau, pour éviter des problèmes de dysfonctionnement
              si opendir(3) est invoqué sur une FIFO  ou  un  périphérique  de
              bande.  Cet attribut ne devrait jamais être utilisé ailleurs que
              dans l’implémentation de opendir(3).

       O_EXCL S’assurer que cet appel crée le fichier : si  cet  attribut  est
              spécifié  en  conjonction avec O_CREAT et si le fichier pathname
              existe déjà, open() échouera.  Le  comportement  de  O_EXCL  est
              indéterminé si O_CREAT n’est pas spécifié.

              Lorsque ces deux attributs sont spécifiés, les liens symboliques
              ne sont pas suivis : si pathname est un lien symbolique,  open()
              échouera quelque soit l’endroit où pointe le lien symbolique.

              O_EXCL  n’est  pris  en  charge sur les systèmes de fichiers NFS
              quand la version NFSv3, ou ultérieure, sur  les  noyaux  2.6  ou
              plus  récents.  Dans les environnements où la prise en charge de
              O_EXCL pour NFS n’est pas fournie, les programmes qui ont besoin
              de  cette fonctionnalité pour verrouiller des tâches risquent de
              rencontrer  une  concurrence  critique  (race  condition).   Les
              programmes  portables  qui  veulent  effectuer  un  verrouillage
              fichier atomique en utilisant un fichier verrou et  qui  doivent
              éviter  la  dépendance  de  la  prise  en charge NFS pour O_EXCL
              peuvent créer un fichier unique sur le même système de  fichiers
              (par  exemple,  avec  le  PID  et le nom de l’hôte), et utiliser
              link(2) pour créer un lien sur un fichier  de  verrouillage.  Si
              link(2)  renvoie  0, le verrouillage est réussi. Sinon, utiliser
              stat(2) sur ce fichier unique pour  vérifier  si  le  nombre  de
              liens  a  augmenté  jusqu’à  2,  auquel  cas le verrouillage est
              également réussi.pour vérifier si le nombre de liens a  augmenté
              jusqu’à 2. Ne pas utiliser la valeur de retour de link(2).

       O_LARGEFILE
              (LFS)  Permet  d’ouvrir  des fichiers dont la taille ne peut pas
              être représentée  dans  un  off_t  (mais  peut  l’être  dans  un
              off64_t).  La  macro  _LARGEFILE64_SOURCE doit être définie pour
              obtenir cette définition. Fixer la macro _FILE_OFFSET_BITS à  64
              est  la  méthode  à favoriser pour accéder à des grands fichiers
              sur des systèmes 32  bits,  plutôt  que  d’utiliser  O_LARGEFILE
              (voir feature_test_macros(7)).

       O_NOATIME (Depuis Linux 2.6.8)
              Ne  pas mettre à jour l’heure de dernier accès au fichier (champ
              st_atime de l’inœud) quand le fichier est lu  avec  read(2).  Ce
              attribut est seulement conçu pour les programmes d’indexation et
              d’archivage, pour lesquels  il  peut  réduire  significativement
              l’activité  du  disque. L’attribut peut ne pas être effectif sur
              tous les systèmes de fichiers. Par exemple,  avec  NFS,  l’heure
              d’accès est mise à jour par le serveur.

       O_NOCTTY
              Si  pathname  correspond  à  un  périphérique de terminal — voir
              tty(4)  —,  il  ne  deviendra  pas  le  terminal  contrôlant  le
              processus même si celui-ci n’est attaché à aucun autre terminal.

       O_NOFOLLOW
              Si pathname est un lien symbolique, l’ouverture échoue. Ceci est
              une  extension  FreeBSD, qui fut ajoutée à Linux dans la version
              2.1.126. Les  liens  symboliques  se  trouvant  dans  le  chemin
              d’accès proprement dit seront suivis normalement.

       O_NONBLOCK ou O_NDELAY
              Le  fichier  est ouvert en mode « non-bloquant ». Ni la fonction
              open() ni aucune autre opération ultérieure sur  ce  fichier  ne
              laissera  le processus appelant en attente. Pour la manipulation
              des FIFO  (tubes  nommés),  voir  également  fifo(7).  Pour  une
              explication  de  l’effet  de  O_NONBLOCK en conjonction avec les
              verrouillages impératifs et les baux de fichiers, voir fcntl(2).

       O_SYNC Le  fichier  est ouvert en écriture synchronisée. Chaque appel à
              write(2) sur le fichier bloquera le processus  appelant  jusqu’à
              ce que les données aient été écrites physiquement sur le support
              matériel (voir la section NOTES plus bas).

       O_TRUNC
              Si le fichier existe, est un fichier ordinaire, et est ouvert en
              écriture  (O_RDWR  ou  O_WRONLY), il sera tronqué à une longueur
              nulle. Si le fichier est une FIFO ou un  périphérique  terminal,
              l’attribut O_TRUNC est ignoré. Sinon, le comportement de O_TRUNC
              n’est pas précisé. Sur de nombreuses versions de Linux, il  sera
              ignoré ; sur d’autres versions il déclenchera une erreur).

       Certains de ces attributs optionnels peuvent être modifiés par la suite
       avec la fonction fcntl(2).

       creat() est équivalent à open() avec l’attribut flags égal à O_CREAT  |
       O_WRONLY | O_TRUNC.

VALEUR RENVOYÉE

       open()  et  creat()  renvoient  le nouveau descripteur de fichier s’ils
       réussissent, ou -1 s’ils échouent, auquel cas errno  contient  le  code
       d’erreur.

ERREURS

       EACCES L’accès  demandé  au  fichier  est interdit, ou la permission de
              parcours pour  l’un  des  répertoires  du  chemin  pathname  est
              refusée,  ou  le  fichier  n’existe  pas encore et le répertoire
              parent    ne    permet    pas    l’écriture.     (Voir     aussi
              path_resolution(7).)

       EEXIST pathname existe déjà et O_CREAT et O_EXCL ont été indiqués.

       EFAULT pathname pointe en‐dehors de l’espace d’adressage accessible.

       EFBIG  Voir EOVERFLOW.

       EINTR  Pendant  qu’il  était  bloqué  en  attente  de  l’ouverture d’un
              périphérique  lent  (par  exemple,  une  FIFO ;  voir  fifo(7)),
              l’appel  a  été  interrompu par un gestionnaire de signal ; voir
              signal(7).

       EISDIR On a demandé une écriture alors que  pathname  correspond  à  un
              répertoire (en fait, O_WRONLY ou O_RDWR ont été demandés).

       ELOOP  Trop  de  liens  symboliques  ont  été  rencontrés en parcourant
              pathname, ou l’attribut O_NOFOLLOW est indiqué et  pathname  est
              un lien symbolique.

       EMFILE Le processus a déjà ouvert le nombre maximal de fichiers.

       ENAMETOOLONG
              pathname est trop long.

       ENFILE La  limite  du nombre total de fichiers ouverts sur le système a
              été atteinte.

       ENODEV pathname correspond à un fichier spécial et  il  n’y  a  pas  de
              périphérique  correspondant. (Ceci est un bogue du noyau Linux ;
              dans cette situation, ENXIO devrait être renvoyé.)

       ENOENT O_CREAT est absent et le fichier n’existe pas. Ou un  répertoire
              du  chemin  d’accès  pathname  n’existe  pas,  ou  est  un  lien
              symbolique pointant nulle part.

       ENOMEM Pas assez de mémoire pour le noyau.

       ENOSPC pathname devrait être créé mais  le  périphérique  concerné  n’a
              plus assez de place pour un nouveau fichier.

       ENOTDIR
              Un  élément  du chemin d’accès pathname n’est pas un répertoire,
              ou l’attribut O_DIRECTORY est utilisé et pathname n’est  pas  un
              répertoire.

       ENXIO  O_NONBLOCK | O_WRONLY est indiqué, le fichier est une FIFO et le
              processus n’a pas de fichier ouvert en lecture.  Ou  le  fichier
              est   un   noeud  spécial  et  il  n’y  a  pas  de  périphérique
              correspondant.

       EOVERFLOW
              pathname fait référence à un  fichier  ordinaire  qui  est  trop
              grand  pour  être  ouvert.  Cela  arrive  quand  une application
              compilée sur une plate-forme 32 bits sans -D_FILE_OFFSET_BITS=64
              essaie  d’ouvrir  un  fichier  dont  la taille dépasse (2<<31)-1
              bits ; consultez également O_LARGEFILE ci-dessus. C’est l’erreur
              spécifiée  par  POSIX.1-2001 ;  dans  les noyaux antérieurs à la
              version 2.6.24, Linux fournissait l’erreur EFBIG dans ce cas.

       EPERM  L’attribut  O_NOATIME  est  indiqué,  mais  l’UID  effectif   de
              l’appelant  n’est  pas le propriétaire du fichier, et l’appelant
              n’est pas privilégié (CAP_FOWNER).

       EROFS  Un accès en écriture est demandé alors que pathname  réside  sur
              un système de fichiers en lecture seule.

       ETXTBSY
              On  a  demandé  une  écriture alors que pathname correspond à un
              fichier exécutable actuellement utilisé.

       EWOULDBLOCK
              L’attribut O_NONBLOCK est indiqué, et un bail  incompatible  est
              détenu sur le fichier (voir fcntl(2)).

CONFORMITÉ

       SVr4,  BSD 4.3,  POSIX.1-2001.  Les attributs O_DIRECTORY, O_NOATIME et
       O_NOFOLLOW  sont  spécifiques  à  Linux;  il  faut  définir  la   macro
       _GNU_SOURCE pour avoir leurs définitions.

       L’attribut  O_CLOEXEC  n’est pas spécifié dans POSIX.1-2001, mais l’est
       dans POSIX.1-2008.

       O_DIRECT n’est pas spécifié  par  POSIX ;  il  faut  définir  la  macro
       _GNU_SOURCE pour obtenir sa définition.

NOTES

       Sous Linux, le drapeau O_NONBLOCK indique que l’on veut ouvrir mais pas
       nécessairement dans l’intention de lire ou d’écrire. Il est typiquement
       utilisé  pour  ouvrir  des  périphériques  dans  le but de récupérer un
       descripteur de fichier pour l’utiliser avec ioctl(2).

       Contrairement aux autres valeurs qui peuvent être indiquées dans flags,
       les  valeurs  du  mode daccs O_RDONLY, O_WRONLY et O_RDWR ne sont pas
       des bits individuels. Ils définissent l’ordre des deux  bits  de  poids
       faible  de  flags, et ont pour valeur respective 0, 1 et 2. En d’autres
       mots, la combinaison O_RDONLY | O_WRONLY est une erreur logique et  n’a
       certainement  pas  la  même  signification que O_RDWR. Linux réserve le
       mode d’accès, particulier et non standard, mode 3  (11  en  binaire)  à
       flags   pour   signifier :  vérifier  les  permissions  de  lecture  et
       d’écriture du fichier et renvoyer un  descripteur  de  fichier  qui  ne
       pourra  pas  être  utilisé  pour  une  lecture ou une écriture. Ce mode
       d’accès non standard  est  utilisé  par  certains  pilotes  Linux  pour
       renvoyer  un  descripteur  qui  ne  sera utilisé que par des opérations
       ioctl(2) spécifiques au périphérique.

       L’effet (indéfini) de O_RDONLY | O_TRUNC varie selon  l’implémentation.
       Sur de nombreux systèmes, le fichier est effectivement tronqué.

       Plusieurs  problèmes  se posent avec le protocole NFS, concernant entre
       autres O_SYNC, et O_NDELAY .

       POSIX  fournit  trois   variantes   différentes   des   entrées-sorties
       synchronisées,  correspondant  aux drapeaux O_SYNC, O_DSYNC et O_RSYNC.
       Actuellement (2.63.31), Linux  implémente  seulement  O_SYNC,  mais  la
       glibc  définit  O_DSYNC  et  O_RSYNC  à  la  même valeur que O_SYNC. La
       plupart des systèmes de fichiers Linux n’implémentent en  fait  pas  la
       sémantique  O_SYNC  de  POSIX  (qui  demande  que  les mises à jour des
       métadonnées d’une écriture soient sur  le  disque  lors  du  retour  en
       espace  utilisateur),  mais  la  sémantique  O_DSYNC  (qui  ne  demande
       uniquement que les données des fichiers et les métadonnées  nécessaires
       pour  les  retrouvées  soit  sur le disque au moment ou l’appel système
       rend la main).

       Notez que open() peut ouvrir des fichiers spéciaux mais creat() ne peut
       pas en créer, il faut utiliser mknod(2) à la place.

       Sur  les  systèmes  de  fichiers  NFS,  où  la correspondance d’UID est
       activée, open() peut renvoyer un descripteur de  fichier  alors  qu’une
       requête  read(2) par exemple sera refusée avec le code d’erreur EACCES.
       En effet, le client a effectué open() en  vérifiant  les  autorisations
       d’accès,  mais  la  correspondance d’UID est calculée par le serveur au
       moment des requêtes de lecture ou d’écriture.

       Si un fichier est créé, ses horodatages  st_atime,  st_ctime,  st_mtime
       (respectivement  heure  de  dernier  accès,  de  dernière  modification
       d’état, et de  dernière  modification ;  voir  stat(2))  sont  fixés  à
       l’heure  actuelle,  ainsi  que  les  champs  st_ctime  et  st_mtime  du
       répertoire parent.  Sinon,  si  le  fichier  est  modifié  à  cause  de
       l’attribut  O_TRUNC,  ses champs st_ctime et st_mtime sont remplis avec
       l’heure actuelle.

   O_DIRECT
       L’attribut O_DIRECT peut imposer, pour des  raisons  d’alignement,  des
       restrictions  sur  la  longueur  et  l’adresse  des tampons de l’espace
       utilisateur et des déplacements dans les entrées-sorties  de  fichiers.
       Sous  Linux,  les  restrictions  d’alignement  varient  en  fonction du
       système de fichiers et de la version du noyau, et il peut aussi ne  pas
       y   en   avoir.  Cependant,  il  n’y  a  pas  actuellement  d’interface
       indépendante du système de fichiers qui permette  aux  applications  de
       découvrir  ces  restrictions  pour  un  fichier  ou système de fichiers
       donné. Certains systèmes de fichiers fournissent leur propre  interface
       pour  faire  cela,  comme  par  exemple  l’opération XFS_IOC_DIOINFO de
       xfsctl(3).

       Sous Linux 2.4, la taille des transferts, l’alignement du tampon et  la
       position  dans  le  fichier  doivent être des multiples de la taille de
       blocs logiques du système de fichiers. Sous Linux  2.6,  un  alignement
       sur des multiples de 512 octets est suffisant.

       L’attribut   O_DIRECT   a  été  introduit  par  SGI  IRIX,  qui  a  des
       restrictions d’alignement identiques à Linux 2.4. IRIX a aussi un appel
       fcntl(2)  pour  obtenir  les alignements et tailles appropriés. FreeBSD
       4.x a introduit un attribut du même nom,  mais  sans  les  restrictions
       d’alignement.

       La  gestion de O_DIRECT a été ajouté dans Linux 2.4.10. Les noyaux plus
       anciens ignorent simplement cet attribut. Certains système de  fichiers
       peuvent  ne pas supporter cet attribut et open() échouera avec l’erreur
       EINVAL s’il a été utilisé.

       Les applications  devraient  éviter  de  mélanger  des  entrées-sorties
       O_DIRECT  et  normales  pour  le  même  fichier, en particulier sur des
       régions d’un même fichier qui se recouvrent.  Même  si  le  système  de
       fichiers gère les problèmes de cohérence dans cette situation, le débit
       global d’entrées-sorties  sera  moindre  que  si  un  seul  mode  était
       utilisé.  De  la  même  façon,  les  applications  devraient  éviter de
       mélanger l’utilisation de mmap(2) et  d’entrées-sorties  directes  pour
       les mêmes fichiers.

       Le  comportement  de O_DIRECT avec NFS diffère des systèmes de fichiers
       locaux. Les anciens noyaux, ou les  noyaux  configurés  d’une  certaine
       façon, peuvent ne pas gérer cette combinaison. Le protocole NFS ne gère
       pas le passage de l’attribut au serveur, les  entrées-sorties  O_DIRECT
       ne  font  donc  que  le  cache  des pages du client ; le serveur pourra
       toujours utiliser un cache pour les entrées-sorties. Le client  demande
       au  serveur  de rendre les entrées-sorties synchrones pour préserver la
       sémantique synchrone de O_DIRECT. Certains  serveurs  fonctionnent  mal
       dans  ces  circonstances,  tout particulièrement si les entrées-sorties
       sont de petite taille. Certains serveurs peuvent aussi être  configurés
       pour mentir aux clients et indiquer que les entrées-sorties ont atteint
       un espace de stockage stable ; ceci évitera la perte de performance  en
       augmentant  les risques pour l’intégrité des données en cas de problème
       d’alimentation du serveur. Le client NFS Linux n’a pas  de  restriction
       d’alignement pour les entrées-sorties O_DIRECT.

       En résumé, O_DIRECT est un outil potentiellement puissant qui doit être
       utilisé avec précaution. Les applications devraient  utiliser  O_DIRECT
       comme  une  option  pour  améliorer  les performances, qui devrait être
       désactivée par défaut.

              « Ce qui m’a  toujours  dérangé  avec  O_DIRECT  est  que  toute
              l’interface  est  stupide  et  a  probablement été conçue par un
              singe  dérangé,  sous  l’influence  de  substances  psychotropes
              puissantes ». — Linus.

BOGUES

       Actuellement,  il  n’est  pas  possible  d’activer  les entrées-sorties
       contrôlées par  les  signaux  en  indiquant  O_ASYNC  lors  de  l’appel
       open() ; il faut utiliser fcntl(2) pour activer cet attribut.

VOIR AUSSI

       chmod(2),  chown(2),  close(2),  dup(2),  fcntl(2),  link(2), lseek(2),
       mknod(2), mmap(2), mount(2), openat(2),  read(2),  socket(2),  stat(2),
       umask(2),   unlink(2),   write(2),   fopen(3),  feature_test_macros(7),
       fifo(7), path_resolution(7), symlink(7)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».