简体   繁体   中英

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

I am running a Qt app that launches a process. (The Assistant, launched from the main app).

When I close the app, I get the warning

QProcess: Destroyed while process is still running.

How can I get rid of it ?

I saw this similar question and tried to kill... Nothing happened.

This question seems to say maybe I should add waitForFinished()... Help won't close when app does.

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

It should be sufficient to rewrite the destructor using close() :

Closes all communication with the process and kills it. After calling this function, QProcess will no longer emit readyRead(), and data can no longer be read or written.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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