为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容3067478 2021-03-29 16:14:05
我必须在我的C ++代码中运行系统命令:int val = system( "pacmd list-sink-inputs | grep -c 'state: RUNNING'" );该命令返回所需的结果val,但也val返回调用的结果(我似乎无法弄清楚哪一个)也被写入stdout终端并在终端上打印。有没有一种方法可以将呼叫重定向到“不写入”stdout或“以外”的任何位置val?
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

Bash管道会有所帮助。

如果使用|&,则命令的标准错误通过管道连接到command2的标准输入;否则,命令的标准错误通过管道连接到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'" );


查看完整回答
反对 回复 2021-04-16
?
杨魅力

TA贡献1811条经验 获得超6个赞

将最后一个命令的输出重定向到/dev/null该技巧。

最终命令如下所示:

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

这是一个很好的帖子,解释了/dev/null


查看完整回答
反对 回复 2021-04-16
  • 2 回答
  • 0 关注
  • 589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信