Проект зависает на QProcess::start при запуске QtAssistant

Я использую QProcess::start для запуска Qt Assistant с моим пользовательским файлом проекта справки. Он отлично работает, пока я не загружу проект (не файл проекта помощи) в свою программу. Programm генерирует изображения из определенных данных, используя пользовательскую библиотеку. Даже когда все процессы завершаются, и я вижу сгенерированные изображения и больше ничего не происходит, когда я пытаюсь запустить Qt Assistant, моя программа зависает на функции QProcess:start при попытке запустить процесс. Код:

show() функция (общедоступная):

if (!run())
    return false;
QByteArray ba("setSource ");
ba.append("qthelp://insyn_help/doc/");

proc->write(ba + page.toLocal8Bit() + '\n');
return true;

run() функция (частная):

if (!proc)
    proc = new QProcess();
if (proc->state() == QProcess::Running)
    return true;
QString app = QString(QT_BIN_DIR) + QDir::separator() + QString("assistant");
QString path = QString(PREFIX) + QString(HELP_INSTALL_PATH) + QString("/help_project.qhc");
QStringList args;
args << QLatin1String("-collectionFile")
     << QLatin1String(path.toLatin1())
     << QLatin1String("-enableRemoteControl");

QFileInfo help_project(path);
if (help_project.exists()) {
    proc->start(app,args);
    if (!proc->waitForStarted()) {
        m_exitCode = 1;
        emit closed();
        return false;
    }
}

Этот код является частью класса AssistantLauncher, который был зарегистрирован с использованием qmlRegisterType и добавлен в main.qml как член окна приложения. Моя программа его нигде не трогает (кроме вызова метода show()). Это отдельный объект (кроме того, что он является частью appWindow). Вопрос в том, почему процесс не может начаться только после того, как моя программа что-то поработала? И почему у QProcess::start вообще нет таймаута.

UPD: я переместил proc->start(app,args); в дочерний процесс, который я получаю с помощью fork() и теперь моя программа зависает на pid_t child = fork(). Итак, проблема в том, что новый процесс не может быть создан.


person Maxim Skvortsov    schedule 25.09.2018    source источник
comment
Пробовал запускать что-то другое (хром-браузер, например), но получилось то же самое.   -  person Maxim Skvortsov    schedule 25.09.2018
comment
Подробнее на forum.qt.io/ тема/94973/   -  person Maxim Skvortsov    schedule 27.09.2018


Ответы (1)