В чем разница между QProcess::start и QProcess::startDetached?

документация Qt дает это объяснение:

  • QProcess::start:

    запускает данную программу в новом процессе, если ни одна из них еще не запущена, передача аргументов командной строки в аргументах.

  • QProcess::startDetached:

    запускает программу с аргументами аргументов в новом процесс, и отделяется от него.

что такое разница между ними? Только разница в том, что вы можете запустить только один экземпляр программы, используя QProcess::start и многие экземпляры, использующие QProcess::startDetached?

2 ответов


Если вы используете start, прекращение вызывающего процесса приведет к прекращению вызываемого процесса. Если вы используете startDetached, после завершения вызывающего абонента, ребенок будет продолжать жить. Например:

QProcess * p = new QProcess();
p->start("some-app");
delete p;// <---some-app will be terminated

QProcess * p = new QProcess();
p->startDetached("some-app");
delete p;// <---some-app will continue to live

функция start () является функцией-членом, а startDetached-статической функцией класса.

Если вы посмотрите на документация QProcess, вы увидите, что есть функции, которые позволяют вам делать вещи с процессом, такие как: -

Это лишь некоторые из вещей, которые вы можете сделать только с экземпляром QProcess. Если, однако, вы хотите простой и быстрый способ запуска процесса без создания экземпляр и вам не нужна дополнительная функциональность, вы можете просто вызвать QProcess:: startDetached.

кроме того, как состояние docs для startDetached: -

Если вызывающий процесс завершает работу, отсоединенный процесс будет продолжать жить.