猿问

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

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

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

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

有没有一种方法可以将呼叫重定向到“写入”stdout或“以外”的任何位置val


慕容3067478
浏览 590回答 2
2回答

DIEA

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

杨魅力

将最后一个命令的输出重定向到/dev/null该技巧。最终命令如下所示:int val = system( "pacmd list-sink-inputs | grep -c 'state: RUNNING' > /dev/null" );这是一个很好的帖子,解释了/dev/null。
随时随地看视频慕课网APP
我要回答