Qt文档给出了这样的解释:
QProcess::start:
如果没有运行,则在新进程中启动给定程序,在参数中传递命令行参数.
QProcess::startDetached:
在新进程中使用参数参数启动程序程序,并从中分离.
两者有什么区别?唯一的区别是你只能使用一个程序的一个实例启动QProcess::start而且许多实例使用QProcess::startDetached?
Sin*_*all 13
如果使用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
Run Code Online (Sandbox Code Playgroud)
start() 函数是一个成员函数,而 startDetached 是一个静态类函数。
如果您查看QProcess的文档,您会看到有一些功能可以让您对流程进行处理,例如:-
这些只是您只能使用 QProcess 实例执行的一些操作。但是,如果您想要一种简单快捷的方式来启动流程而无需创建实例,并且不需要额外的功能,您可以简单地调用 QProcess::startDetached。
此外,作为startDetached的文档状态: -
如果调用进程退出,分离的进程将继续存在。