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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Окончание вывода в stdout  (Прочитано 2997 раз)
dmitriym
Гость
« : Март 24, 2014, 16:22 »

Как определить, что дочерний поток окончил вывод в stdout? Многострочное сообщение может быть очень велико, больше буфера, что, как я понимаю, выльется в то, что QProcess::waitForReadyRead() будет возвращать true несколько раз. Думаю использовать или таймаут, или текстовый признак окончания ввода. Имеются ли другие способы решения проблемы?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Март 24, 2014, 22:11 »

открой кран и попробуй определить когда закончится вода Смеющийся Поток открыт всё время работы программы, следовательно нужно либо использовать специальный текст, который будет сигнализировать о конце необходимых данных (то что ты и сам уже понял), либо ждать завершения программы (перекрыли воду).
Записан
dmitriym
Гость
« Ответ #2 : Март 25, 2014, 09:22 »

При работе выводе на консоль, консоль понимает, что окончился вывод в stdout и началась ожидание ввода в stdin. Это в случае реализации "вопрос-ответ". Как консоль узнает, что дочерний процесс перешел в режим ожидания из stdin?
Записан
OKTA
Гость
« Ответ #3 : Март 25, 2014, 09:34 »

Что значит понимает? stdin & stdout это потоки ввода-вывода. Когда хочешь читаешь, когда хочешь - записываешь. Или вы чего-то не понимаете или же дайте хоть пример какой-нибудь, где консоль пытается что-то понять  Веселый

А вообще можно использовать семафор или мьютекс!
« Последнее редактирование: Март 26, 2014, 15:52 от OKTA » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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