@DDwrt100

Как перехватить вывод в консоль из программы на С?

Привет всем, есть небольшая консольная программка написанная на C.
Во время работы она выводит в терминал информацию о своей работе.
Как мне перенаправить этот вывод в файл?
Почему то стандартные методы Linux ничего не сбрасывают в файл. По окончанию работы файл пустой.
./app > output.txt
./app > tee -a output.txt


В самой программе вывод организован с помощью printf.
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 2
Возможно несколько вариантов:
1. Приложение пишет в stderr, тогда

./app 2>stderr.txt

2. Приложение пишет в stdout но не считывает ничего с stdin

по умолчанию вывод fprintf буферизован и буфер сбрасывается только при заполнении буфера, ожидании ввода или завершении программы. Можно либо отклюить буферизацию через
setvbuf(stdout, NULL, _IONBF, 0);

где-нибудь в начале программы, либо сбрасывать буффер принудительно через fflush(stdout); после каждого printf.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Ubuntu
software engineer
./app >>file.log 2>>&1

В терминал можно писать либо в stdout либо stderr, перехватывайте оба и перенаправляйте в файл, попробуйте с дописыванием (>>)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы