read () de stdin

Considérer la ligne de code suivante:

while((n = read(STDIN_FILENO, buff, BUFSIZ)) > 0)

Selon ma compréhension read/write fonctions sont une partie de la non-tampon d'e/s. cela veut-il dire read() fonction va lire qu'un seul personnage par appel d'stdio? Ou en d'autres termes, la valeur de n sera

    -1  in case of error
n =  0  in case of EOF
     1  otherwise

Si ce n'est pas le cas, quand le ci-dessus read() fonction sera de retour et pourquoi?

Note: je me disais aussi que read() va attendre jusqu'à ce qu'il lit correctement BUFSIZ nombre de caractères à partir de stdin. Mais ce qui se passe dans un cas nombre de caractères disponible à la lecture, sont à moins de BUFSIZ? Va lire attendre indéfiniment ou jusqu'à ce que EOF arrive (Ctrl + D sur unix ou Ctrl + Z sur windows)?

Aussi, disons BUFSIZ = 100 et stdin = ACtrl+D (j'.e EOF immédiatement à la suite d'un seul caractère). Maintenant, combien de fois le while loop va se répéter?

source d'informationauteur Ravi Gupta