Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

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

DESCRIPTION

       É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
       (consultez 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, pseudoterminaux, sockets et (depuis Linux 2.6)  tubes
              et FIFO. Consultez 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.)  Consultez  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 blocs 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.

              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.

              En général, le comportement de O_EXCL est indéterminé  s'il  est
              utilisé  sans  O_CREAT.  Il  existe  une exception toutefois : à
              partir de Linux 2.6, O_EXCL peut être utilisé  sans  O_CREAT  si
              pathname   fait   référence   à  un  périphérique  bloc.  Si  le
              périphérique bloc est utilisé par le système (par exemple,  s'il
              est monté), open() échoue avec l'erreur EBUSY.

              Sur  les  systèmes  de fichiers NFS, O_EXCL n'est pris en charge
              qu'avec la version NFSv3 ou ultérieure, sur les  noyaux  2.6  ou
              plus  récents. Dans les environnements NFS où la prise en charge
              d'O_EXCL 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 (avant
              d'inclure tout fichier d'en‐tête) 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      (consultez
              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 — consultez
              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.   (Consultez   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  Consultez EOVERFLOW.

       EINTR  Pendant qu'il  était  bloqué  en  attente  de  l'ouverture  d'un
              périphérique  lent  (par exemple, une FIFO ; consultez fifo(7)),
              l'appel  a  été  interrompu  par  un  gestionnaire  de  signal ;
              consultez 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  nœud  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 (consultez 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 (avant d'inclure tout fichier d'en‐tête) 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  (avant  d'inclure  tout fichier d'en‐tête) 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 d'accs 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 ; consultez 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),  fifo(7),  path_resolution(7),
       symlink(7)

COLOPHON

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

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'équipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain  Portal  <URL:http://manpagesfr.free.fr/>   (2003-2006).   Julien
       Cristau et l'équipe francophone de traduction de Debian (2006-2009).

       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> ».