繁体   English   中英

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

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

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

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

QProcess:进程仍在运行时被销毁。

我该如何摆脱呢?

我看到了类似的问题并试图杀死……什么都没发生。

这个问题似乎表明也许我应该添加waitForFinished()...当应用程序运行时,帮助将不会关闭。

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  
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM