将Linux system()调用命令的输出重定向到仅可变的

时间:2018-05-04 22:11:50

标签: c++ linux command io-redirection

我必须在我的C ++代码中运行系统命令:

int val = system( "pacmd list-sink-inputs | grep -c 'state: RUNNING'" );

该命令将结果返回到val这是可取的,但val或者调用的返回(我似乎无法弄清楚哪一个)也被写入{{1并在终端上打印。

有没有办法将呼叫重定向到 NOT 写入stdout或其他任何地方,只能写入stdout

2 个答案:

答案 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