Выполнить команду оболочки 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)

Другие вопросы по тегам