Почему write () печатает перед printf () в перенаправлении вывода?
Итак, я знаюprintf()
более высокий уровень, чемwrite()
и заканчивает тем, что использовалwrite()
. Printf()
буферизован иwrite()
делает системные звонки.
Пример 1, если бы я должен был запустить программу сprintf()
доwrite()
тогда будет выводить значениеprintf()
до значенияwrite()
.
Пример 2, если я должен был запустить ту же программу и пройти через перенаправление вывода в файл, значениеwrite()
выходы доprintf()
.
#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;
}
Я не понимаю, что здесь происходит. В примере 1 программа ожидаетprintf()
вывод перед запускомwrite()
? В примере 2 программа перенаправляет первый готовый вывод? И потому чтоwrite()
является более низким уровнем, и не нужно буферизовать какprintf()
тогда это сначала напечатано?