QProcess :: start和QProcess :: startDetached有什么区别?

时间:2014-04-24 08:34:22

标签: c++ qt qprocess

Qt文档给出了这样的解释:

  • QProcess::start

      

    在新进程中启动给定程序(如果尚未运行)   在参数中传递命令行参数。

  • QProcess::startDetached

      

    使用参数参数以新的方式启动程序程序   过程,并从中脱离。

两者有什么区别?区别的是,您只能使用QProcess::start启动一个程序实例,而使用QProcess::startDetached启动多个实例?

2 个答案:

答案 0 :(得分:12)

如果使用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

答案 1 :(得分:4)

start()函数是一个成员函数,而startDetached是一个静态类函数。

如果您查看documentation of QProcess,您会发现有一些功能可以让您执行以下流程: -

这些只是您只能对QProcess实例执行的一些操作。但是,如果您想要一种简单快捷的方法来启动流程而无需创建实例,并且您不需要额外的功能,那么您只需调用QProcess :: startDetached。

此外,正如文档陈述startDetached: -

  

如果调用进程退出,则分离的进程将继续存在。