Qprocess 参数回显和管道

Qprocess arguments echo and piping

我正在尝试在 QProcess 下的 Raspberry Pi (Raspbian) 中启动 CEC 命令。

如果我在 shell 中执行这个:

echo 'standby 0' | cec-client -s

它正在工作,但如果我将它放入一个 Qprocess 中:

QProcess *proc = new QProcess;
proc->start("echo",{"'standby 0' | cec-client -s"});
proc->waitForFinished();

它没有按预期执行。否则在我的 Raspberry Pi 中工作得很好。我做错了什么?

问题是你不能运行 QProcess 的系统命令,而只能是单个进程。因此,解决方法是将您的命令作为参数传递给 bash:

process.start("bash", QStringList() << "-c" << "echo 'standby 0' | cec-client -s");