Я пытаюсь с помощью dup2 перенаправить стандартный вывод в другой файл:линукс dup2 и Printf
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(void)
{
int newfd;
if ((newfd = open("output_file.txt", O_CREAT|O_TRUNC|O_WRONLY, 0644)) < 0) {
exit(1);
}
printf("Luke, I am your...\n");
dup2(newfd, 1);
printf("Foobar.\n");
return 0;
}
Когда первый printf
печатает новая строка \n
, Luke, I am your...
будет выведена на экран и Foobar
будет записан в output_file. txt, если первый printf не печатает новую строку printf("Luke, I am your...");
, обе строки будут записаны в output_file.txt. Таким образом, printf будет писать первую строку в буфер, если нет новой строки (\n
).
Что на самом деле происходит из-за этого?
http://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-the-call-unless-a-newline-is-in-the-format-strin – rootkea