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

时间:2014-11-18 18:15:24

标签: c++ qt process

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

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

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

我怎样摆脱它?

我看到这个similar question并试图杀死......什么都没发生。

question似乎在说我应该添加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;
}

1 个答案:

答案 0 :(得分:1)

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