QProcess返回退出代码0

时间:2017-07-06 01:25:39

标签: c++ bash qt

我正在使用QProcess对几台主机运行ping。当我使用带有命令的QProcess作为“ping -c 1 -W 1 hostname”时,无论ping是否成功,返回的退出代码始终为0。我测试了终端中脱机的主机,退出代码是预期的。假设hostname是脱机的实际主机。 这是包含QProcess的代码片段:

QProcess *process = new QProcess(this);
QString cmd("ping -c 1- W 1 hostname");
process->start(cmd);
std::cout << process->exitCode() << std::endl;

1 个答案:

答案 0 :(得分:1)

QProcess::exitCode()说:

  

返回已完成的 last 进程的退出代码。

因此,您需要等待进程(QProcess::waitForFinished)退出,然后再检查其退出代码。

示例:

if ( !process->waitForFinished( -1 ) )
{
    qWarning() << "Error:" << process->errorString();
    return;
}

qDebug() << "Exit code:" << process->exitCode();