Инициализировать QProcess для уже запущенного процесса

Я хотел бы знать, возможно ли создать QProcess и инициализировать его уже запущенным процессом?

Мое приложение запускает другое приложение. Поэтому, если мое приложение аварийно закрыто, когда оно будет перезапущено, я хотел бы прикрепить другое приложение.


person artoon    schedule 01.07.2013    source источник
comment
Вы имеете в виду, что хотите присоединить QProcess к процессу, который уже запущен и не выполняется вашей программой? Я думаю, что это невозможно.   -  person Pavel Strakhov    schedule 01.07.2013
comment
Нет, прикрепить нельзя.   -  person Frank Osterfeld    schedule 01.07.2013
comment
да это это. Существует ли другой способ сделать это?   -  person artoon    schedule 01.07.2013
comment
Что именно вы хотите сделать с процессом?   -  person Pavel Strakhov    schedule 01.07.2013
comment
Мое приложение запускает другое приложение. Поэтому, если мое приложение ненормально закрыто, когда оно будет перезапущено, я хотел бы прикрепить другое приложение.   -  person artoon    schedule 01.07.2013


Ответы (2)


Вы должны использовать систему IPC, например, например. Qt D-Bus в Linux. Затем вы взаимодействуете с другим процессом через систему IPC вместо stdin и stdout.

Когда ваше внешнее приложение дает сбой, перезапущенное приложение может повторно подключиться к внутреннему процессу.

person cloose    schedule 02.07.2013

К сожалению, из-за внутренней архитектуры QProcess это не поддерживается. Вам нужно будет скопировать и вставить кучу QProcess кода в новый класс и самостоятельно добавить недостающую функциональность.

Однако есть более простой способ: создать оболочку процесса, которая предоставляет QProcess через QLocalSocket. Обертка проста и не должна давать сбоев. Он может самозавершаться, когда завершается сам процесс, чтобы предотвратить зависание оборванных оболочек. Когда ваше приложение дает сбой или завершается, новый экземпляр может попытаться подключиться к локальному сокету, если существует оболочка. Если он не существует, он создаст новую оболочку.

person Kuba hasn't forgotten Monica    schedule 10.10.2013