如何不让终端显示任何东西?

时间:2011-11-17 19:57:03

标签: c console embedded terminal

环境:嵌入式系统,linux,c。

第三方模块和我自己的模块将使用printf()在终端/控制台上打印信息。我怎样才能禁止在终端/控制台上显示这些信息? (注意我不能评论那些printf(),因为有些是在第三方模块中)我可以将终端设置为某种模式,以便不显示任何内容吗? (类似于系统(“stty sane”),也许?)或者我需要使用ioctl()吗?请帮帮我......

非常感谢!

2 个答案:

答案 0 :(得分:6)

如果你想在运行程序时没有看到输出,你可以像这样重定向它的输出:

./program > /dev/null

/dev/null是一种特殊的设备,可以吃掉你喂它的所有东西(比如黑洞)。 >将输出(stdout)重定向到文件。将输出重定向到/dev/null意味着所有内容都写入/dev/null并且不会对其执行任何操作,因此您实际上会丢弃输出。

如果您想在程序中执行此操作,可以致电freopen,然后重新打开stdout/dev/null,即可获得相同的效果。像这样:

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

旁注:要重定向stderr,您可以使用>2>代替freopen,当然您重新开启stderr }}。但是,将stderr重定向到/dev/null并不是一个好主意,尽管将其重定向到文件可能会有所帮助。

如果您要重定向stdoutstderr,可以将stderr重定向到stdout,将stdout重定向到/dev/null,如下所示:

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

(注意重定向的顺序)

答案 1 :(得分:1)

您指的是调试端口吗?如果是这样,您可以重建内核以使其没有调试端口,或者至少禁用它。

如果你在谈论shell--这没有任何意义,对吧?如果禁用shell,您如何访问设备?正如Shahbaz所说,它不太可能存在。更好的选择是阻止用户访问shell。

也许你可以解释一下你正在尝试做什么,以及你的设备如何工作,或至少如何访问它。

<强>更新

好的 - 我们的主板有一个Web界面,我们使用它(密码保护)来启用/禁用连接到调试端口的ssh服务器。这听起来就像你想要的那样。