将 Linux system() 调用命令的输出重定向到仅可变的
Redirect output of Linux system() call command to a varriable only
我必须在我的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
.
相关文章:
- 将标准输出重定向到ostream
- 重定向输入和输出时如何处理主文件I/O?
- 在程序执行期间从标准输出重定向到自定义流
- 始终输出到屏幕并允许重定向
- 将 Tcl 中的命令输出重定向到文件时,文件以 DOS 格式生成
- 将 Linux system() 调用命令的输出重定向到仅可变的
- 将 ffmpeg 控制台输出重定向到C++中的字符串或文件
- Win32 GUI C(++) 应用将标准输出和标准输出重定向到磁盘上的同一文件
- 将线程之间的标准输入/输出重定向
- 无法使用创建进程重定向标准输出
- 重定向子进程的输出
- 我可以重定向两个子进程的标准输出吗?
- GDB Cygwin 不会将输出重定向到文件
- 重定向标准输出时调用 dup2 失败
- 如何在 CPP 中反转重定向输出操作
- 创建进程和重定向输出
- bash:重定向输出混淆
- Qt重定向输出从cout到qDebug
- 我如何用CreateProcess重定向输出到文件
- c++运行批处理文件而不重定向输出