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

mar*_*ial 2 c embedded terminal console

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

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

非常感谢!

Sha*_*baz 6

如果您想在运行程序时不看输出,可以像下面这样重定向其输出:

./program > /dev/null
Run Code Online (Sandbox Code Playgroud)

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

如果你想这样做在程序本身,你可以调用freopen,您可以重新打开stdout/dev/null,得到了同样的效果.像这样:

freopen("/dev/null", "w", stdout);
Run Code Online (Sandbox Code Playgroud)

旁注:要重定向stderr,而不是>您可以使用2>和使用freopen,当然您重新打开stderr.这不是一个好主意,重定向stderr/dev/null,虽然,虽然它可能有助于将其重定向到一个文件.

如果你想重定向既stdoutstderr,您可以重定向stderrstdoutstdout/dev/null这样的:

./program > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

(注意重定向的顺序)