QProcess::start和QPprocess::startDetached之间有什么区别

What is the difference between QProcess::start and QProcess::startDetached?

本文关键字:什么 区别 之间 QPprocess start QProcess startDetached      更新时间:2023-10-16

Qt文档给出了以下解释:

  • QProcess::start:

    在新进程中启动给定程序(如果没有程序正在运行),在参数中传递命令行参数。

  • QProcess::startDetached:

    使用新的

两者之间有什么区别?区别仅仅在于您可以使用QProcess::start启动一个程序的一个实例,而使用QProcess::startDetached启动多个实例吗?

如果使用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的文档,你会发现有一些功能可以让你用这个过程做一些事情,比如:-

  • 从正在运行的进程接收输出或错误流(readAllStandardOutput/readAllStandardError)
  • 将输出重定向到文件(setStandardOutputFile)
  • 使用文件对流程进行标准输入(setStandardInputFile)
  • 通过渠道进行沟通
  • 流程完成时得到通知

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

此外,作为startDetached:-的文档状态

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