【发布时间】:2022-07-04 21:06:31
【问题描述】:
我想在 Qt 中执行一个外部程序并获取返回码。我不想在终端中看到任何输出。我尝试将 stderr 和 stdout 重定向到文件,但命令的输出仍在屏幕上打印。
bool checkHostAlive(const QString& host, bool surpressOutput) {
QStringList parameters;
#if defined(WIN32)
parameters << "-n" << "1";
#else
parameters << "-c 1";
#endif
parameters << host;
auto proc = QProcess();
if(surpressOutput) {
// Surpress ping output
auto fileStdOut = QString();
auto fileStdErr = QString();
proc.setStandardErrorFile(fileStdErr);
proc.setStandardOutputFile(fileStdOut);
}
if (proc.execute("ping", parameters) == 0) {
return true;
}
return false;
}
【问题讨论】:
-
QProcess::execute是static成员,因此与实例proc关联的任何状态都无关紧要。此外,传递给setStandardErrorFile等的参数。应该是一个有效的文件路径:我不确定空的QString在这里实际上会做什么。 -
@G.M.感谢您指出这些。我以为
.func不同于::func