Russian Qt Forum
Апрель 25, 2024, 07:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перенаправление стандартного вывода в консольном приложении  (Прочитано 4499 раз)
titan83
Гость
« : Июль 28, 2015, 14:05 »

Здравствуйте.
Система - линукс.
Такая странная ситуация - пытаюсь сохранить вывод консольного приложения в файл: ./prog > prog.log.
Вывод на консоль делаю printf().
В результате файл создается, но он всегда пустой.
При этом для любых других программ все работает как и ожидается - вывод сохраняется.
В файле проекта есть строка CONFIG += console.
Почему может быть такое поведение?
Спасибо.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #1 : Июль 28, 2015, 16:19 »

нужно делать flush().
Но для того что бы он работал, получите дескрипторы файлов-потоков ввода/вывода (на сколько я помню у них стандартные номера 1,2,3 для ввода, вывода и ошибок), далее
fprintf(stdout,"...");
fflush(stdout);

или как то так, писал по памяти. после этого данные будут записаны в файл. Так как по умолчанию включена буферизация и нужно дергать flush вручную.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Июль 28, 2015, 16:21 »

А зачем вообще printf, если ты пишешь на плюсах? Есть же std::cout, где std::endl сбрасывает буфер.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Bepec
Гость
« Ответ #3 : Июль 28, 2015, 16:46 »

Не всегда сбрасывает, во всяком случае на старых окошках. Попадал в ситуацию, когда сбрасывает только flush.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #4 : Июль 28, 2015, 16:54 »

Не всегда сбрасывает, во всяком случае на старых окошках. Попадал в ситуацию, когда сбрасывает только flush.
Ну это вы передавайте привет компилятору, который лучше всех поддерживает стандарт. Улыбающийся
Записан
Bepec
Гость
« Ответ #5 : Июль 28, 2015, 21:13 »

Old - не будем спорить. В тот раз я цитатами доказал, что поведение компилятора соответствует стандарту. Опять рыться изза фигни? увольте Веселый

PS подкалывать можно, но не в каждой же теме Веселый
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #6 : Июль 28, 2015, 21:21 »

В тот раз я цитатами доказал, что поведение компилятора соответствует стандарту.
Улыбающийся

PS подкалывать можно, но не в каждой же теме Веселый
А я вас не подкалываю. Это еще одно подтверждение того, что самый строгий компилятор кладет на стандарты.
Записан
titan83
Гость
« Ответ #7 : Июль 29, 2015, 10:28 »

Всем спасибо.
Тоже вечером подумалось на счет флаша.
А пишу не я и не на плюсах - человек еще не освоил - хочет писать как умеет - на си.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #8 : Июль 31, 2015, 12:53 »

если писать в stderr, то файл будет пуст
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.