READ(2)

NOM
read - Lire le contenu d'un fichier.

SYNOPSIS
#include <sys/types.h>
#include <unistd.h>

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

DESCRIPTION
read lit jusqu'a count octets depuis le descripteur de fichier fd dans le buffer pointe par buf. Si count vaut zero, read renvoie zero et n'a pas d'autres effets. Si count est superieur a SSIZE_MAX, le resultat est indefini.

VALEUR RENVOYEE
read renvoie -1 s'il echoue, auquel cas errno contient le code d'erreur, et la position de la tete de lecture est indefinie. Sinon, read renvoie le nombre d'octets lus (0 en fin de fichier), et avance la tete de lecture de ce nombre. Le fait que le nombre retourne soit plus petit que le nombre demande n'est pas une erreur. Ceci se produit a la fin du fichier, ou si on lit depuis un tube ou un terminal, ou encore si read a ete interrompu par un signal.

ERREURS

EINTR
    read a ete interrompu par un signal avant d'avoir eu le temps de lire quoi que ce soit.

EAGAIN
    On utilise une lecture non bloquante (attribut O_NONBLOCK du descripteur de fichier) et aucune donnee n'etait disponible.

EIO Erreur d'entree/sortie. Ceci arrive si un processus est dans un groupe en arriere-plan et tente de lire depuis le terminal. Il recoit un signal SIGTTIN mais il l'ignore ou le bloque. Ceci se produit egalement si une erreur d'entree/sortie bas-niveau s'est produite pendant la lecture d'un disque ou d'une bande.

EISDIR
    fd est un repertoire.

EBADF
    fd n'est pas un descripteur valide, ou n'est pas ouvert en lecture.

EINVAL
    fd corrrespond a un objet ne permettant pas la lecture.

EFAULT
    buf pointe en dehors de l'espace d'adresse accessible.

D'autres erreurs peuvent se produire, suivant le type d'objet associe a fd. POSIX permet a un read interrompu par un signal de renvoyer soit le nombre d'octets lus a ce point, soit -1, et de placer errno a EINTR.

CONFORMITE
SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3

RESTRICTIONS
Sur un systeme de fichiers NFS, la lecture de petites quantites de donnees ne mettra a jour l'horodatage du fichier que lors de la premiere 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 a jour du champ 'atime' du cote serveur. La veritable semantique UNIX peut etre obtenue en desactivant le cache des attributs du cote client, mais generalement ceci augmente sensiblement la charge du serveur, et degrade ses performances.

VOIR AUSSI
readdir(2), write(2), write(2), fcntl(2), close(2), lseek(2), select(2), readlink(2), ioctl(2), fread(3).