Qt避免警告QProcess:在进程仍在运行时被销毁(助手)

Qt avoid warning QProcess: destroyed while process still running (Assistant)

本文关键字:助手 运行时 进程 警告 QProcess Qt      更新时间:2023-10-16

我正在运行一个启动进程的Qt应用程序。(助手,从主应用程序启动)。

当我关闭应用程序时,我收到警告

Q:在进程仍在运行时销毁。

我怎样才能摆脱它?

我看到了这个类似的问题,并试图杀死...什么也没发生。

这个问题似乎在说也许我应该添加 waitForDone()...当应用关闭时,帮助不会关闭。

Help::Help():m_helpProcess(0) {}
Help::~Help()
{
  if (m_helpProcess) {
    m_helpProcess.waitForFinished();   // help stays open after app closes
    m_helpProcess->kill();   // added with no effect
    delete m_helpProcess;
  }
}
bool Help::start() 
{
  if (!m_helpProcess)
      process = new QProcess();
  QStringList args;
  args << QLatin1String("-collectionFile")
       << QLatin1String("mycollection.qhc");
  process->start(QLatin1String("Assistant.app"), args);
  if (!process->waitForStarted())
      return;
}

使用 close() 重写析构函数就足够了:

关闭与进程的所有通信并终止它。调用此函数后,QProcess 将不再发出 readyRead(),数据也无法再读写。

Help::~Help()
{
    if (m_helpProcess) {
        // m_helpProcess->waitForFinished();   // help stays open after app closes
        m_helpProcess->close();                // close channels
        delete m_helpProcess;                  // destructor actually kills the process  
    }
}