我必须在我的C ++代码中运行系统命令:
int val = system( "pacmd list-sink-inputs | grep -c 'state: RUNNING'" );
该命令将结果返回到val
这是可取的,但val
或者调用的返回(我似乎无法弄清楚哪一个)也被写入{{1并在终端上打印。
有没有办法将呼叫重定向到 NOT 写入stdout
或其他任何地方,只能写入stdout
?
答案 0 :(得分:1)
Bash Pipelines会有所帮助。
如果|&使用时,命令的标准错误通过管道连接到command2的标准输入;它是2>& 1 |的简写。
因此您可以使用以下命令
int val = system( "pacmd list-sink-inputs &| grep -c 'state: RUNNING'" );
或
int val = system( "pacmd list-sink-inputs 2>&1| grep -c 'state: RUNNING'" );
答案 1 :(得分:0)
将最后一条命令的输出重定向到/dev/null
可以解决问题。
最终命令如下:
int val = system( "pacmd list-sink-inputs | grep -c 'state: RUNNING' > /dev/null" );
Here是一篇不错的帖子,解释了/dev/null
。