gpt4 book ai didi

c - 如何不让终端显示任何内容?

转载 作者:行者123 更新时间:2023-12-02 10:51:40 25 4
gpt4 key购买 nike

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

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

非常感谢!

最佳答案

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

./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 重定向到 stdoutstdout/dev/null 像这样:

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

(注意重定向的顺序)

关于c - 如何不让终端显示任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com