Помогите пожалуйста наладить перехват stdout консольного приложения. |
Здравствуйте, гость ( Вход | Регистрация )
Помогите пожалуйста наладить перехват stdout консольного приложения. |
Gordey |
1.7.2010, 20:48
Сообщение
#1
|
Студент Группа: Участник Сообщений: 19 Регистрация: 29.1.2009 Пользователь №: 516 Спасибо сказали: 1 раз(а) Репутация: 0 |
Всем привет.
Помогите пожалуйста наладить перехват stdout консольного приложения. Использую QT 4.6.3 и Microsoft Visual Studio 2008. Задача: из Qt GUI запустить консольное приложение, перехватить его стандартный поток ввода/вывода и вывести перехваченные данные в элемент QTextEdit. Консольное приложение в цикле валит в поток вывода строки Value: 1 Value: 2 Value: 3 и т.д.
В Qt GUI при нажатии на кнопку создается отдельный поток.
При создании потока запускаем процесс с консольным приложением. При получении сигнала readyReadStandardOutput() отправляем считанные данные родительскому приложению.
В Qt GUI получаем посылку с данными и выводим ее в QTextEdit.
Проблема в том, что при перехвате потока ввода/вывода и выводе данных в QTextEdit происходит залипание Qt GUI. То есть я практически ничего не могу сделать с родительским окном. Как можно решить данную проблему? Как избавиться от залипания QT окна? При решении проблемы изменять код консольного приложения нельзя , нужно решить задачу другими способами. PS: Прикладываю тестовые проекты приложений. Так как проекты тестовые строго не судите за код… Обработки завершения процессов и потоков я не делал. Для распаковки архива с примерами удалите ".txt". Сообщение отредактировал Litkevich Yuriy - 1.7.2010, 21:39
Причина редактирования: пользуйся тэгом code
Прикрепленные файлы
|
|
|
Litkevich Yuriy |
2.7.2010, 11:50
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Но такой вариант мне не подходит так как консольное приложения я изменить не могу. а зачем ты в него вообще полез, если оно неизменяемое? Про него и забудь.Видимо для TextEdit это слишком большой темп поступления данных. Можно попробовать буферировать его, хотя я сомневаюсь, что это поможет. Скорее всего придётся менять сам виджет. |
|
|
Текстовая версия | Сейчас: 15.1.2025, 11:48 |