¿Por qué escribe write () antes de printf () en la redirección de salida?
Así que séprintf()
es un nivel más alto quewrite()
y termina usandowrite()
. Printf()
está protegido ywrite()
realiza llamadas al sistema.
Ejemplo 1, si tuviera que ejecutar un programa conprintf()
antes dewrite()
entonces generaría el valor deprintf()
antes del valor dewrite()
.
Ejemplo 2, si tuviera que ejecutar el mismo programa y hacer que pasara por la redirección de salida a un archivo, el valor dewrite()
salidas antes deprintf()
.
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("This is a printf test\n");
write(STDOUT_FILENO, "This is a write test\n", 21);
return 0;
}
No entiendo lo que está pasando aquí. En el ejemplo 1, ¿está el programa esperandoprintf()
s salida antes de ejecutarwrite()
? En el ejemplo 2, ¿el programa está redirigiendo la primera salida que está lista? Y porquéwrite()
es de nivel inferior y no necesita almacenarse comoprintf()
entonces se imprime primero?