Как не дать терминалу отображать что-либо? - PullRequest
2 голосов
/ 17 ноября 2011

среда: встроенная система, Linux, c.

Сторонние модули и мои собственные модули будут печатать информацию на терминале / консоли с помощью printf (). Как я могу запретить отображение этой информации на терминале / консоли? (обратите внимание, что я не могу комментировать эти printf (), так как некоторые из них находятся в сторонних модулях) Могу ли я установить терминал в определенный режим, чтобы ничего не показывалось? (что-то похожее на system ("stty sane"), может быть?) или мне нужно использовать ioctl ()? Пожалуйста, помогите мне ...

Большое спасибо!

Ответы [ 2 ]

6 голосов
/ 18 ноября 2011

Если вы не хотите видеть вывод при запуске программы, вы можете перенаправить его вывод следующим образом:

./program > /dev/null

/dev/null - это специальное устройство, которое съедает все, что вы его кормите (например,черная дыра).> перенаправляет вывод (из stdout) в файл.Перенаправление вывода на /dev/null означает, что все записано в /dev/null, и это ничего не делает с ним, поэтому вы фактически выбрасываете свой вывод.

Если вы хотите сделать это в самой программе,Вы можете позвонить freopen и снова открыть stdout до /dev/null, получив тот же эффект.Например:

freopen("/dev/null", "w", stdout);

Sidenote : для перенаправления stderr вместо > вы можете использовать 2> и freopen, конечно же, вы снова откроете stderr,Перенаправлять stderr на /dev/null не очень хорошая идея, хотя может быть полезно перенаправить его в файл.

Если вы хотите перенаправить и stdout, и stderr, вы можетеперенаправить stderr на stdout и stdout на /dev/null следующим образом:

./program > /dev/null 2>&1

(обратите внимание на порядок перенаправления)

1 голос
/ 20 ноября 2011

Вы имеете в виду порт отладки? Если это так, вы можете пересобрать ядро, чтобы у него не было порта отладки, или, по крайней мере, отключить его.

Если вы говорите о оболочке - это не имеет никакого смысла, верно? Если оболочка отключена, как вы получаете доступ к своему устройству? Как говорит Шахбаз, он вряд ли существует. Лучшим вариантом является запрет доступа пользователя к оболочке.

Может быть, вы могли бы объяснить больше о том, что именно вы пытаетесь сделать, и как работает ваше устройство, или, по крайней мере, как к нему обращаются.

Обновление:

Хорошо - у нашей платы есть веб-интерфейс, мы используем его (защищенный паролем), чтобы включить / отключить сервер ssh, подключенный к порту отладки. Похоже, это то, что вы хотите.

...