Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: Madgeniy от Март 12, 2011, 01:03



Название: Падение внешней программы при использовании QProcess
Отправлено: Madgeniy от Март 12, 2011, 01:03
Доброго времени суток. Вопрос заключается в следующем. Есть, например, программа которая вызывается с помощью QProcess не деаттаченная. Она падает. Падает и все приложение. Как можно этот момент отловить?


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: alexman от Март 12, 2011, 11:37
Программа, что запускаете из QProcess, имеет исходники? Если да то можно просто ее запустить отдельно для отладки.


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: Madgeniy от Апрель 06, 2011, 21:47
Нет, не имеет. У меня куча таких программ. На вход поступают одинаковые для всех программ данные. На некотором наборе некоторые программы падают. А мне нужно это отловить. Возможно на уровне WIN API можно?


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: Пантер от Апрель 06, 2011, 22:19
Код нужен.


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: voral от Апрель 06, 2011, 23:44
Нет, не имеет. У меня куча таких программ. На вход поступают одинаковые для всех программ данные. На некотором наборе некоторые программы падают. А мне нужно это отловить. Возможно на уровне WIN API можно?

1. Прежде чем запускать процесс выведите в консоль те параметры которые передаете. (Да и саму команду). Попробуйте в консоли запустить руками ту вторую программу используя выведенные в консоль команду и параметры.

2. Вы вывод запускаемого процесса както обрабатываете или просто пускаете и все?


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: Madgeniy от Апрель 07, 2011, 12:48
Я жму картинку внешним компрессором. На некоторых картинках он падает. Например, я вызываю кодер jpeg2000. Для одной картинки он срабатывает корректно при числе уровней разрешения (параметр такой есть) одном, при таком же числе уровней разрешения для другой картинки падает, когда пытается обратно ее в исходный формат переконвертировать. Вообщем неважно. Мне нужно узнать, можно ли такое падение отловить в принципе, а не лезть в исходники самих программ.


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: Пантер от Апрель 07, 2011, 13:03
int QProcess::exitCode () const


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: Madgeniy от Апрель 07, 2011, 15:41
Тогда вопрос такой.
при QProcess.start() ошибка вылетает. приложение ждет QProcess.finished(), но не достигает его по причине вывалившейся ошибки. Как быть в этом случае? Просто по таймеру проверять?


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: mutineer от Апрель 07, 2011, 15:44
Попробуй ловить error(QProcess::ProcessError error)


Название: Re: Падение внешней программы при использовании QProcess
Отправлено: kdm от Апрель 07, 2011, 15:44
Может void  stateChanged ( QProcess::ProcessState newState )?
EDIT: Пока писал, появился новый ответ.