首页 > 解决方案 > 仅将 Linux system() 调用命令的输出重定向到变量

问题描述

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

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

该命令返回所需的结果val,但也val或调用的返回(我似乎无法弄清楚是哪一个)也被写入stdout并打印在终端上。

有没有办法将呼叫重定向到NOT write tostdout或任何地方,但 to val

标签: c++linuxcommandio-redirection

解决方案


Bash Pipelines会有所帮助。

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


推荐阅读