Qt文档给出了这样的解释:
QProcess::start
:
在新进程中启动给定程序(如果尚未运行) 在参数中传递命令行参数。
QProcess::startDetached
:
使用参数参数以新的方式启动程序程序 过程,并从中脱离。
两者有什么区别?区别的是,您只能使用QProcess::start
启动一个程序实例,而使用QProcess::startDetached
启动多个实例?
答案 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: -
如果调用进程退出,则分离的进程将继续存在。