2013-07-01 2 views
4

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

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

+2

Вы хотите добавить QProcess к процессу, который уже запущен и не выполнен вашей программой? Думаю, это невозможно. –

+0

Нет, «присоединение» невозможно. –

+0

да, это так. Есть ли другой способ сделать это? – artoon

ответ

1

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

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

1

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

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