c++ - 仅将 Linux system() 调用命令的输出重定向到变量
问题描述
我必须在我的 C++ 代码中运行系统命令:
int val = system( "pacmd list-sink-inputs | grep -c 'state: RUNNING'" );
该命令返回所需的结果val
,但也val
或调用的返回(我似乎无法弄清楚是哪一个)也被写入stdout
并打印在终端上。
有没有办法将呼叫重定向到NOT write tostdout
或任何地方,但 to val
?
解决方案
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'" );
推荐阅读
- javascript - 如何在节点 js 中将 Promise 转换为异步等待
- javascript - 为什么每当我更新状态时,它保存状态变量看起来就像是一个渲染?
- swiper - 我试图使用 swiper 但它不起作用
- oracle - 如何在oracle forms 12c中创建从现有表单调用表单的快捷方式
- resteasy - 如何让 RestEasy 为错误的查询参数生成 http 错误 400
- azure - 设置高可用性基础架构
- javascript - 顶点图表:在条形上方显示 Y 轴标签和数据标签值
- excel - 变量范围不被识别为工作表的属性
- flutter - 从主线程使用多个隔离时面临的问题
- git - 如何解决 git commit 错误 - 错误 - :类型必须是 [build, core, ci,docs, feat, fix, perf, revert, style, test] 之一