Considere la siguiente línea de código:lectura() desde la entrada estándar
while((n = read(STDIN_FILENO, buff, BUFSIZ)) > 0)
Según mi entendimiento read/write
funciones son una parte de E/S sin almacenamiento intermedio. Entonces, ¿eso significa que la función read()
leerá solo un carácter por llamada de stdio? O en otras palabras, el valor de n será
-1 in case of error
n = 0 in case of EOF
1 otherwise
Si no es el caso, ¿cuándo la función anterior devolverá read()
y por qué?
Nota: También estaba pensando que read()
esperará hasta que lea con éxito BUFSIZ
número de caracteres de stdin. Pero lo que sucede en un número de casos de caracteres disponibles para leer es menor que BUFSIZ
? Se leerá esperar por siempre o hasta que llegue EOF (Ctrl + D
en Unix o Ctrl + Z
en Windows)?
Además, digamos BUFSIZ = 100
y stdin = ACtrl+D
(es decir, EOF inmediatamente después de un solo carácter). Ahora, ¿cuántas veces se iterará el while loop
?
Como un FYI, creo que puede 'leer' de' 0', que es una entrada estándar, pero solo puede usar 'stdin' con' fread() '. –
sí, tienes razón ... ¡zas! Como stdin es del tipo 'FILE *' no se puede usar con 'read' –
o' STDIN_FILENO' si está de humor para etiquetar. – Dave