Por que write () é impresso antes de printf () no redirecionamento de saíd
Então eu seiprintf()
é um nível superior awrite()
e acaba usandowrite()
. Printf()
é armazenado em buffer ewrite()
faz chamadas do sistema.
Exemplo 1, se eu fosse executar um programa comprintf()
anteswrite()
, então ele produziria o valor deprintf()
antes do valor dewrite()
.
Exemplo 2, se eu fosse executar o mesmo programa e fazê-lo passar pelo redirecionamento de saída para um arquivo, o valor dewrite()
saídas 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;
}
Eu não entendo o que está acontecendo aqui. No exemplo 1, o programa está aguardandoprintf()
s antes de executarwrite()
? No exemplo 2, o programa está redirecionando a primeira saída pronta? E porquewrite()
é de nível inferior e não precisa fazer buffer comoprintf()
depois é impresso primeiro?