我必須在我的C ++代碼中運(yùn)行系統(tǒng)命令:int val = system( "pacmd list-sink-inputs | grep -c 'state: RUNNING'" );該命令返回所需的結(jié)果val,但也val返回調(diào)用的結(jié)果(我似乎無(wú)法弄清楚哪一個(gè))也被寫入stdout終端并在終端上打印。有沒(méi)有一種方法可以將呼叫重定向到“不寫入”stdout或“以外”的任何位置val?
2 回答

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
Bash管道會(huì)有所幫助。
如果使用|&,則命令的標(biāo)準(zhǔn)錯(cuò)誤通過(guò)管道連接到command2的標(biāo)準(zhǔn)輸入;否則,命令的標(biāo)準(zhǔn)錯(cuò)誤通過(guò)管道連接到command2的標(biāo)準(zhǔn)輸入。它是2>&1 |的簡(jiǎn)寫。
因此,您可以使用以下命令
int val = system( "pacmd list-sink-inputs &| grep -c 'state: RUNNING'" );
或者
int val = system( "pacmd list-sink-inputs 2>&1| grep -c 'state: RUNNING'" );

楊魅力
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
將最后一個(gè)命令的輸出重定向到/dev/null
該技巧。
最終命令如下所示:
int val = system( "pacmd list-sink-inputs | grep -c 'state: RUNNING' > /dev/null" );
這是一個(gè)很好的帖子,解釋了/dev/null
。
添加回答
舉報(bào)
0/150
提交
取消