это мой первый шаг на Stackoverflow!
Итак, я пытаюсь использовать setbuf()
для перенаправления stdout
в char buffer[BUFSIZ]
. Он отлично работает, когда я использую printf()
, но не совсем, когда я использую системный вызов write()
.
Вот пример кода:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
char buffer[BUFSIZ];
freopen("/dev/null", "a", stdout);
setbuf(stdout, buffer);
printf("This works\n");
write(stdout->_file, "This doesn't.\n", 14);
fflush(stdout);
freopen("/dev/tty", "a", stdout);
printf("Buffer content :\n%s", buffer);
return 0;
}
И вывод
Содержимое буфера:
Это работает
У вас есть идеи, почему?
Потому что пока я не вижу, как это работает, я передам стандартный вывод на стандартный ввод, а затем прочту результат - я думаю, это не самый чистый способ сделать это.
Спасибо, и хорошего дня!