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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qprocess  (Прочитано 6504 раз)
Иван4444
Гость
« : Октябрь 22, 2010, 12:37 »

Всем привет.

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

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

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

то теперь, дабы не менять весь код, хочется просто заполнить переменную res.
как быть? (Process::start() ничего не возвращает)
Записан
BRE
Гость
« Ответ #1 : Октябрь 22, 2010, 12:43 »

int QProcess::exitCode () const
Записан
Иван4444
Гость
« Ответ #2 : Октябрь 22, 2010, 12:45 »

exitCode() в какой момент вернет значение?
а если я запустил программу, она еще выполняется.. то exitCode() уже можно вызвать?
в документации "Returns the exit code of the last process that finished." тут интересно именно finished.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Октябрь 22, 2010, 12:46 »

bool   waitForFinished ( int msecs = 30000 )
bool   waitForStarted ( int msecs = 30000 )
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Иван4444
Гость
« Ответ #4 : Октябрь 22, 2010, 12:47 »

если говорить о windows, то судя по всему, ближе по возвращаемому значению будет ExitStatus()
Записан
Иван4444
Гость
« Ответ #5 : Октябрь 22, 2010, 12:50 »

так-с.. тут вот какое дело.

я запускаю например не просто процесс, а демон который будет работать до наступления всемирного потопа.
И сразу же надо делать другие задачи, просто учитывая фактор того что запустился/не запустился.
« Последнее редактирование: Октябрь 22, 2010, 13:24 от Иван4444 » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Октябрь 22, 2010, 12:52 »

Смотри что вернет bool   waitForStarted ( int msecs = 30000 ). int msecs - время ожидания старта. Читай ассистент.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #7 : Октябрь 22, 2010, 12:59 »

так-с.. тут вот какое дело.

я запускаю например не просто процесс, а демон который будет работать до наступления всемирного потопа.
И сразу же надо делать другие задача, просто учитывая фактор того что запустился/не запустился.
Если это нормальный демон, то он себя форкнет и сразу завершиться, после этого ты сможешь получить код завершения.
Записан
developer
Гость
« Ответ #8 : Октябрь 22, 2010, 13:14 »

Цитировать
Если это нормальный демон, то он себя форкнет и сразу завершиться, после этого ты сможешь получить код завершения.
А еще если ето нормальный демон, он должен записать pid файл со своим process id. кроме всего выше перечисленного(в постах) ты еще можеш проверить есть ли уже етот файл, вытащить оттуда процесс ид, и проверить существует ли такой процес в таблице процесов - если да тогда можно считать что демон запустился, если нет, тогда можно припустить что что-то пошло не так.
Записан
Иван4444
Гость
« Ответ #9 : Октябрь 22, 2010, 13:19 »

спс парни, выручаете.

Ну и посл вопрос, а можно ли при помощи QProcess выполнить например "beaty.jpg" чтоб в случае чего он просто его открыл в той программе с которой он ассоциируется?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Октябрь 22, 2010, 13:21 »

Для этого существует bool QDesktopServices::openUrl ( const QUrl & url ) [static]
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #11 : Октябрь 22, 2010, 13:22 »

Ну и посл вопрос, а можно ли при помощи QProcess выполнить например "beaty.jpg" чтоб в случае чего он просто его открыл в той программе с которой он ассоциируется?
bool QDesktopServices::openUrl ( const QUrl & url )   [static]
Записан
Иван4444
Гость
« Ответ #12 : Октябрь 22, 2010, 13:24 »

Большое спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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