Russian Qt Forum

Программирование => С/C++ => Тема начата: YvenTitan от Декабрь 12, 2019, 16:57



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

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


Название: Re: Обнаружение вопроса при запуске команды через "system" или "QProcess::execute"
Отправлено: sergek от Декабрь 12, 2019, 21:24
Можно повесить слот на сигнал QProcess::readyReadStandardOutput и увидите вопросы. Только лучше использовать опции самого 7zip, например, -y.


Название: Re: Обнаружение вопроса при запуске команды через "system" или "QProcess::execute"
Отправлено: YvenTitan от Декабрь 13, 2019, 10:53
Спасибо за ответ, но у меня не получилось сигналом QProcess::readyReadStandardOutput отследить момент вопроса. Опция -y хорошо помогает, когда надо ответить на вопрос "Да", но мне после вопроса нужно выйти и выдать ошибку (о том, что архив неисправен).


Название: Re: Обнаружение вопроса при запуске команды через "system" или "QProcess::execute"
Отправлено: ViTech от Декабрь 13, 2019, 11:04
Похоже, этот момент не так просто отследить, возможно придётся что-то платформозависимое писать.
Determine if QProcess is waiting for user input (https://stackoverflow.com/questions/53074904/determine-if-qprocess-is-waiting-for-user-input).


Название: Re: Обнаружение вопроса при запуске команды через "system" или "QProcess::execute"
Отправлено: sergek от Декабрь 13, 2019, 13:07
... но мне после вопроса нужно выйти и выдать ошибку (о том, что архив неисправен).
Не уверен, что вник в детали, но мне кажется, что можно в слоте стандартного вывода этот вопрос отловить и грохнуть весь процесс, который этот вопрос задает.


Название: Re: Обнаружение вопроса при запуске команды через "system" или "QProcess::execute"
Отправлено: qate от Декабрь 13, 2019, 18:14
у меня не получилось сигналом QProcess::readyReadStandardOutput

1. пробуй readyReadStandardError
2. пробуй весь вывод писать в stderr типа : 7z x arch.7z 1>&2
stderr не буферизуется - может помочь