如何在其参数中使用带有变量的 QProcess?

How to use QProcess with a variable in it's argument?

我想在我的 Qt 项目中使用 QProcess 到 运行 一个 Linux 命令。我的过程有一些参数,所以我使用了以下代码:

QString _strFileName = "/root/a.o";
QStringList _strListArguments;
_strListArguments << "-c" << "file " << _strFileName << " | grep ELF";
_processFile->start("bash", _strListArguments);
_processFile->waitForFinished();

输出为空。但是当我用一个值替换变量时,输出是好的,那里没有错误。

_strListArguments << "-c" << "file /root/a.o | grep ELF";

我该如何解决这个问题?

| grep ELF 这样的东西是 shell 表达式,由 shell 解析和解释。在这种特殊情况下,shell 产生两个进程,将前者的输出重定向到后者的输入。如果你想以编程方式执行此操作,你需要 运行 bash 或任何你使用 QProcess 的 shell 并传递 /root/a.o -c file | grep ELF 作为其参数。请参阅 man bash 以找出必要的标志。