Russian Qt Forum

Qt => Общие вопросы => Тема начата: Иван4444 от Октябрь 22, 2010, 12:37



Название: Qprocess
Отправлено: Иван4444 от Октябрь 22, 2010, 12:37
Всем привет.

Возникла необходимость в использовании QProcess.  Почитал документацию, но не нашел код возвращаемого значения (успешно или нет).

Если раньше в код было

Код:
int res = system("smth") 
if(res == 0)
{}
else
{}

то теперь, дабы не менять весь код, хочется просто заполнить переменную res.
как быть? (Process::start() ничего не возвращает)


Название: Re: Qprocess
Отправлено: BRE от Октябрь 22, 2010, 12:43
int QProcess::exitCode () const


Название: Re: Qprocess
Отправлено: Иван4444 от Октябрь 22, 2010, 12:45
exitCode() в какой момент вернет значение?
а если я запустил программу, она еще выполняется.. то exitCode() уже можно вызвать?
в документации "Returns the exit code of the last process that finished." тут интересно именно finished.


Название: Re: Qprocess
Отправлено: Пантер от Октябрь 22, 2010, 12:46
bool   waitForFinished ( int msecs = 30000 )
bool   waitForStarted ( int msecs = 30000 )


Название: Re: Qprocess
Отправлено: Иван4444 от Октябрь 22, 2010, 12:47
если говорить о windows, то судя по всему, ближе по возвращаемому значению будет ExitStatus()


Название: Re: Qprocess
Отправлено: Иван4444 от Октябрь 22, 2010, 12:50
так-с.. тут вот какое дело.

я запускаю например не просто процесс, а демон который будет работать до наступления всемирного потопа.
И сразу же надо делать другие задачи, просто учитывая фактор того что запустился/не запустился.


Название: Re: Qprocess
Отправлено: Пантер от Октябрь 22, 2010, 12:52
Смотри что вернет bool   waitForStarted ( int msecs = 30000 ). int msecs - время ожидания старта. Читай ассистент.


Название: Re: Qprocess
Отправлено: BRE от Октябрь 22, 2010, 12:59
так-с.. тут вот какое дело.

я запускаю например не просто процесс, а демон который будет работать до наступления всемирного потопа.
И сразу же надо делать другие задача, просто учитывая фактор того что запустился/не запустился.
Если это нормальный демон, то он себя форкнет и сразу завершиться, после этого ты сможешь получить код завершения.


Название: Re: Qprocess
Отправлено: developer от Октябрь 22, 2010, 13:14
Цитировать
Если это нормальный демон, то он себя форкнет и сразу завершиться, после этого ты сможешь получить код завершения.
А еще если ето нормальный демон, он должен записать pid файл со своим process id. кроме всего выше перечисленного(в постах) ты еще можеш проверить есть ли уже етот файл, вытащить оттуда процесс ид, и проверить существует ли такой процес в таблице процесов - если да тогда можно считать что демон запустился, если нет, тогда можно припустить что что-то пошло не так.


Название: Re: Qprocess
Отправлено: Иван4444 от Октябрь 22, 2010, 13:19
спс парни, выручаете.

Ну и посл вопрос, а можно ли при помощи QProcess выполнить например "beaty.jpg" чтоб в случае чего он просто его открыл в той программе с которой он ассоциируется?


Название: Re: Qprocess
Отправлено: Пантер от Октябрь 22, 2010, 13:21
Для этого существует bool QDesktopServices::openUrl ( const QUrl & url ) [static]


Название: Re: Qprocess
Отправлено: BRE от Октябрь 22, 2010, 13:22
Ну и посл вопрос, а можно ли при помощи QProcess выполнить например "beaty.jpg" чтоб в случае чего он просто его открыл в той программе с которой он ассоциируется?
bool QDesktopServices::openUrl ( const QUrl & url )   [static]


Название: Re: Qprocess
Отправлено: Иван4444 от Октябрь 22, 2010, 13:24
Большое спасибо!