Почему 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() тогда это сначала напечатано?

Ответы на вопрос(3)

Ваш ответ на вопрос