Next: Ecriture dans un tube Up: Tubes et Tubes Nommés Previous: Création de tubes ordinaires

Lecture dans un tube

On utilise l'appel système read.
int nb_lu;
nb_lu = read(p[0], buffer, TAILLE_READ);
Remarquer que la lecture se fait dans le descripteur p[0].

Comportement de l'appel:
 
Si le tube n'est  pas vide et contient  taille caract`eres:

    lecture de nb_lu = min(taille, TAILLE_READ) caract`eres.
Si le tube est vide
    Si le nombre d''ecrivains est nul
        alors c'est la fin de fichier et nb_lu est nul.
    Si le nombre d''ecrivains est non nul
        Si lecture bloquante
            alors sommeil
        Si lecture non bloquante
            alors en fonction de l'indicateur
                O_NONBLOCK nb_lu= -1 et errno=EAGAIN.
                O_NDELAY nb_lu = 0.
 


Dominique REVUZ

Mon Feb 2 12:10:31 MET 1998 Une Bug Un mail Merci