Выполнить команду оболочки Linux в C++, скрывая ее вывод
Я хочу выполнить команду оболочки Linux из "/sbin/" с помощью execl или system (или другой команды) и скрыть ее вывод.
Я уже использую "fork", чтобы получить дочерний процесс...
Как если бы я вошел...
service "servicename" restart
Я бы увидел вывод, где написано "перезапуск xyz [OK]". Вместо этого я просто хочу, чтобы команда выполнялась без вывода сообщений, а ее вывод отбрасывался вместо отображения в моем консольном приложении.
2 ответа
Перенаправить вывод на /dev/null
Например.,
service smb restart 1> /dev/null
service smb restart 2> /dev/null
где 1
а также 2
представляет stdout
а также stderr
Вы можете добавить это к вашей команде: " > /dev/null 2>&1 "
Таким образом, ваша команда становится: service [servicename] restart > /dev/null 2>&1
Это означает, что он перенаправляет stderr в stdout (2>&1) и перенаправляет stdout в /dev/null ( > /dev/null)