Перенаправить вывод команды вызова Linux system () только на переменную - PullRequest
0 голосов
/ 05 мая 2018

Мне нужно выполнить системную команду в моем коде C ++:

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

Команда возвращает результат в val, что желательно, но также val или возврат вызова (я не могу понять, какой именно) также записывается в stdout и печатается на терминал.

Есть ли способ перенаправить вызов на НЕ , записать на stdout или куда-нибудь, кроме val?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Перенаправление вывода последней команды на /dev/null делает свое дело.

Последняя команда выглядит следующим образом:

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

Здесь - хороший пост, объясняющий /dev/null.

0 голосов
/ 05 мая 2018

Баш Трубопроводы помогут.

Если используется | &, стандартная ошибка команды связана со стандартным входом 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'" );

...