将Linux system()call命令的输出重定向到仅变量 我必须在一个C++代码中运行一个系统命令:< /p>

将Linux system()call命令的输出重定向到仅变量 我必须在一个C++代码中运行一个系统命令:< /p>,c++,linux,command,io-redirection,C++,Linux,Command,Io Redirection,int val=system(“pacmd列表接收器输入| grep-c‘状态:正在运行’”) 该命令将结果返回到所需的val,但也返回val,或者返回调用(我似乎不知道是哪一个)也写入stdout,并在终端上打印 有没有办法将调用重定向到NOTwrite tostdout或val以外的任何地方?Bash会有所帮助 如果使用|&,则命令的标准错误通过管道连接到command2的标准输入;它是2>和1的简写 因此,您可以使用下面的命令 int val=system(“pacmd列表接收器输入&|

int val=system(“pacmd列表接收器输入| grep-c‘状态:正在运行’”)

该命令将结果返回到所需的
val
,但也返回
val
,或者返回调用(我似乎不知道是哪一个)也写入
stdout
,并在终端上打印

有没有办法将调用重定向到NOTwrite to
stdout
val
以外的任何地方?

Bash会有所帮助

如果使用|&,则命令的标准错误通过管道连接到command2的标准输入;它是2>和1的简写

因此,您可以使用下面的命令

int val=system(“pacmd列表接收器输入&| grep-c‘状态:正在运行’”)


int val=system(“pacmd列表接收器输入2>&1 | grep-c‘状态:正在运行’”)

将最后一个命令的输出重定向到
/dev/null
执行此操作

最后一个命令如下所示:

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

这是一篇很好的文章,解释了没有解决问题的
/dev/null

,它仍然被发送到控制台。grep也在写stderr,我希望它不会写到任何地方,bash应该丢弃grep的结果。如果grep也在写stderr,你可以将stderr重定向到stdout。int val=system(“pacmd列表接收器输入2>&1 | grep-c”状态:正在运行'2>&1”);你用哪种语言?我想你可能会误用这个功能系统。像python一样,我们可以使用val=subprocess.check|u输出(“pacmd list sink inputs 2>&1 | grep-c'state:RUNNING')将命令结果设置为val。但是如果我们使用val=subprocess.call(“pacmd list sink inputs 2>&1 | grep-c'state:RUNNING'),val的值将不会得到我们只调用retcode的命令的结果。