我需要在不引起任何错误的情况下终止进程。我需要区分进程崩溃和用户故意杀死进程的时间。我看到在Windows上,只能使用.kill()而不是.terminate()关闭命令行进程。
如果我连接.errorOccurred(),即使我有意按下该按钮以终止进程,该函数也会被调用。有办法避免这种情况吗?
答案 0 :(得分:0)
有QObject::blockSignals(),可以暂时阻止任何信号的发射。 但是,我会避免使用它,而应在处理该过程的代码中对其进行处理。
两个选项:
在终止之前断开进程的信号:
m_process.disconnect(this);
m_process.kill();
请记住您处于“杀死状态”,请忽略该信号/以其他方式处理它:
m_killingProcess = true; // member variable defaulting to false
m_process.kill();
在连接到errorOccurred
的插槽中:
void Foo::processErrorOccurred(QProcess::ProcessError error)
{
if (m_killingProcess) {
// do nothing?
return;
}
// handle process error (when not killing)
}