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

Redirect output of Linux system() call command to a varriable only

本文关键字:重定向 输出 命令 system Linux 调用      更新时间:2023-10-16

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

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

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

有没有办法将调用重定向到stdout或任何地方,而是写到val

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'" );

将最后一个命令的输出重定向到/dev/null就可以解决问题。

最后一个命令如下所示:

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

这是一篇很好的帖子,可以解释/dev/null.