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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обнаружение вопроса при запуске команды через "system" или "QProcess::execute"  (Прочитано 6632 раз)
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« : Декабрь 12, 2019, 16:57 »

Здравствуйте.
Я запускаю программу через QProcess::execute. По сути тоже самое, как если бы запустил через терминал командной строки вручную.
Бывает такое, что запускаемая программа "о чем-то спрашивает пользователя". В моем случае я запускаю 7z.exe и если в архиве в одной папке лежат 2 одинаковых файла, то программа спрашивает, что делать ли переименование файла при разархивации.

Можете подсказать, можно как-то отследить в основной программе случай, когда программа запущенная в командной строке "задает вопрос"?
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #1 : Декабрь 12, 2019, 21:24 »

Можно повесить слот на сигнал QProcess::readyReadStandardOutput и увидите вопросы. Только лучше использовать опции самого 7zip, например, -y.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #2 : Декабрь 13, 2019, 10:53 »

Спасибо за ответ, но у меня не получилось сигналом QProcess::readyReadStandardOutput отследить момент вопроса. Опция -y хорошо помогает, когда надо ответить на вопрос "Да", но мне после вопроса нужно выйти и выдать ошибку (о том, что архив неисправен).
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #3 : Декабрь 13, 2019, 11:04 »

Похоже, этот момент не так просто отследить, возможно придётся что-то платформозависимое писать.
Determine if QProcess is waiting for user input.
Записан

Пока сам не сделаешь...
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #4 : Декабрь 13, 2019, 13:07 »

... но мне после вопроса нужно выйти и выдать ошибку (о том, что архив неисправен).
Не уверен, что вник в детали, но мне кажется, что можно в слоте стандартного вывода этот вопрос отловить и грохнуть весь процесс, который этот вопрос задает.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #5 : Декабрь 13, 2019, 18:14 »

у меня не получилось сигналом QProcess::readyReadStandardOutput

1. пробуй readyReadStandardError
2. пробуй весь вывод писать в stderr типа : 7z x arch.7z 1>&2
stderr не буферизуется - может помочь
« Последнее редактирование: Декабрь 14, 2019, 13:27 от qate » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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