Loading

NOM

       read - Lire depuis un descripteur de fichier

SYNOPSIS

       #include <unistd.h>

       ssize_t read(int fd, void *buf, size_t count);

       read()  lit  jusqu’à  count  octets depuis le descripteur de fichier fd
       dans le tampon pointé par buf.

       Si count vaut zéro, read() renvoie zéro et n’a pas d’autres effets.  Si
       count est supérieur à SSIZE_MAX, le résultat est indéfini.

VALEUR RENVOYÉE

       read()  renvoie  -1  s’il  échoue,  auquel  cas  errno contient le code
       d’erreur, et la position de la tête de lecture  est  indéfinie.  Sinon,
       read renvoie le nombre d’octets lus (0 en fin de fichier), et avance la
       tête de lecture de ce nombre. Le fait que le nombre renvoyé  soit  plus
       petit  que le nombre demandé n’est pas une erreur. Ceci se produit à la
       fin du fichier, ou si on lit depuis un tube ou un terminal,  ou  encore
       si read() a été interrompu par un signal.

ERREURS

       EAGAIN Le  descripteur  de fichier fd fait référence à un fichier autre
              qu’une socket et a été marqué comme non  bloquant  (O_NONBLOCK),
              et la lecture devrait bloquer.

       EAGAIN ou EWOULDBLOCK
              Le  descripteur  de fichier fd fait référence à un fichier autre
              qu’une socket et a été marqué comme non  bloquant  (O_NONBLOCK),
              et  la  lecture devrait bloquer. POSIX.1-2001 permet de renvoyer
              l’une ou l’autre des erreurs dans ce cas et n’exige pas que  ces
              constantes  aient  la  même  valeur.  Une  application  portable
              devrait donc tester les deux possibilités.

       EBADF  fd n’est pas un descripteur de  fichier  valable  ou  n’est  pas
              ouvert en lecture.

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

       EINTR  read()  a été interrompu par un signal avant d’avoir eu le temps
              de lire quoi que ce soit ; voir signal(7).

       EINVAL Le descripteur fd correspond  à  un  objet  sur  lequel  il  est
              impossible  de  lire.  Ou  bien  le fichier a été ouvert avec le
              drapeau O_DIRECT, et l’adresse de buf, la valeur de count ou  la
              position  actuelle  de  la  tête de lecture ne sont pas alignées
              correctement.

       EINVAL fd a été créé par un appel à timerfd_create(2) et  une  mauvaise
              taille  de tampon a été donnée à read() ; voir timerfd_create(2)
              pour plus d’informations.

       EIO    Erreur d’entrée-sortie. Ceci arrive si un processus est dans  un
              groupe  en  arrière-plan et tente de lire depuis le terminal. Il
              reçoit un signal SIGTTIN mais il l’ignore ou le bloque. Ceci  se
              produit également si une erreur d’entrée-sortie bas-niveau s’est
              produite pendant la lecture d’un disque ou d’une bande.

       EISDIR fd est un répertoire.

       D’autres erreurs peuvent se produire, suivant le type d’objet associé à
       fd.  POSIX permet à un read() interrompu par un signal de renvoyer soit
       le nombre d’octets lus à ce point, soit -1, et de placer errno à EINTR.

CONFORMITÉ

       SVr4, BSD 4.3, POSIX.1-2001.

NOTES

       Sur  un  système  de  fichiers  NFS, la lecture de petites quantités de
       données ne mettra à  jour  l’horodatage  du  fichier  que  lors  de  la
       première  lecture.  Les  lectures  suivantes  ne  modifieront pas cette
       heure. En effet la plupart, si ce n’est tous les clients NFS  disposent
       d’un cache des attributs de fichiers et n’effectuent pas la mise à jour
       du champ « st_atime » du côté serveur.  La  véritable  sémantique  Unix
       peut être obtenue en désactivant le cache des attributs du côté client,
       mais généralement ceci augmente sensiblement la charge du  serveur,  et
       dégrade ses performances.

       Beaucoup  de  disques  et systèmes de fichiers ont été considérés comme
       suffisamment rapides pour que l’implémentation de O_NONBLOCK soit jugée
       inutile.  Ainsi O_NONBLOCK peut ne pas être disponible sur les fichiers
       et/ou les disques.

VOIR AUSSI

       close(2), fcntl(2), ioctl(2), lseek(2), open(2), pread(2),  readdir(2),
       readlink(2), readv(2), select(2), write(2), fread(3)

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