ncurses 在控制台屏幕上禁用内核消息?
ncurses disable kernel messages on console screen?
我正在寻找一种方法来摆脱(内核?)出现在我的 ncurses 应用程序中的消息。我自己编写了应用程序,所以我更喜欢 API 将这些消息重定向到 /dev/null。我的意思是像插入的 U 盘之类的消息。
我试图添加这个,但不幸的是它不起作用
freopen("/dev/null", "w", stderr);
我不是 运行 X,只是直接来自控制台的 ncurses。
我的意思是像插入的 U 盘之类的消息。
谢谢!
更新 1:
有人投票给 close 这个问题,因为它与编程无关。但它是,我自己编写了 ncurses 应用程序,我正在寻找一种方法来禁用内核消息。我更新了问题。
更新 2:
让我更详细地解释一下我在做什么,以及问题是什么:
我正在使用 Tiny Core linux,那是在引导启动后(自写)ncurses 程序。现在,当您连接 USB 驱动器时,我的程序会显示一条消息(我怀疑是内核)。我猜消息是直接写入帧缓冲区的。我使用 TC 5.x 因为我需要 32 位,我 运行 作为 root 并且可以完全访问 os.
尝试使用以下选项通过引导参数配置内核:
loglevel=3(或更低的值)
0 (KERN_EMERG) system is unusable
1 (KERN_ALERT) action must be taken immediately
2 (KERN_CRIT) critical conditions
3 (KERN_ERR) error conditions
4 (KERN_WARNING) warning conditions
5 (KERN_NOTICE) normal but significant condition
6 (KERN_INFO) informational
7 (KERN_DEBUG) debug-level messages
来源:https://www.kernel.org/doc/Documentation/kernel-parameters.txt
另请参阅:Change default console loglevel during boot up
可能无法阻止某些具有足够访问权限的其他进程写入 /dev/console,但您可以在启动时通过设置 console=ttyS0(第一个串行端口)将控制台重新定义为其他一些设备), 请参阅:
此外,如果我们确切知道哪个软件正在发送消息,则可以重新配置它(可能是动态的),但了解您正在使用的 Tiny Core Linux 的版本和版本会有所帮助吗?
例如此网站有 "Core"、"TinyCore" 和 "CorePlus" 版本 1.x 最多 7
http://tinycorelinux.net/downloads.html
这将有助于重现完全相同的行为并测试潜在的解决方案。
您应该能够使用 openvt
在新的虚拟终端上运行您的程序 运行。
我还要指出,如果您希望打破外部依赖,应该可以自己嵌入对 VT 的控制,但请注意,使用的结构在内核版本之间可能不稳定,并且可能需要重新编译。
请参阅 KBD project's sources, specifically openvt.c 了解其工作原理。
我正在寻找一种方法来摆脱(内核?)出现在我的 ncurses 应用程序中的消息。我自己编写了应用程序,所以我更喜欢 API 将这些消息重定向到 /dev/null。我的意思是像插入的 U 盘之类的消息。
我试图添加这个,但不幸的是它不起作用
freopen("/dev/null", "w", stderr);
我不是 运行 X,只是直接来自控制台的 ncurses。
我的意思是像插入的 U 盘之类的消息。
谢谢!
更新 1: 有人投票给 close 这个问题,因为它与编程无关。但它是,我自己编写了 ncurses 应用程序,我正在寻找一种方法来禁用内核消息。我更新了问题。
更新 2: 让我更详细地解释一下我在做什么,以及问题是什么:
我正在使用 Tiny Core linux,那是在引导启动后(自写)ncurses 程序。现在,当您连接 USB 驱动器时,我的程序会显示一条消息(我怀疑是内核)。我猜消息是直接写入帧缓冲区的。我使用 TC 5.x 因为我需要 32 位,我 运行 作为 root 并且可以完全访问 os.
尝试使用以下选项通过引导参数配置内核:
loglevel=3(或更低的值)
0 (KERN_EMERG) system is unusable
1 (KERN_ALERT) action must be taken immediately
2 (KERN_CRIT) critical conditions
3 (KERN_ERR) error conditions
4 (KERN_WARNING) warning conditions
5 (KERN_NOTICE) normal but significant condition
6 (KERN_INFO) informational
7 (KERN_DEBUG) debug-level messages
来源:https://www.kernel.org/doc/Documentation/kernel-parameters.txt
另请参阅:Change default console loglevel during boot up
可能无法阻止某些具有足够访问权限的其他进程写入 /dev/console,但您可以在启动时通过设置 console=ttyS0(第一个串行端口)将控制台重新定义为其他一些设备), 请参阅:
此外,如果我们确切知道哪个软件正在发送消息,则可以重新配置它(可能是动态的),但了解您正在使用的 Tiny Core Linux 的版本和版本会有所帮助吗?
例如此网站有 "Core"、"TinyCore" 和 "CorePlus" 版本 1.x 最多 7
http://tinycorelinux.net/downloads.html
这将有助于重现完全相同的行为并测试潜在的解决方案。
您应该能够使用 openvt
在新的虚拟终端上运行您的程序 运行。
我还要指出,如果您希望打破外部依赖,应该可以自己嵌入对 VT 的控制,但请注意,使用的结构在内核版本之间可能不稳定,并且可能需要重新编译。 请参阅 KBD project's sources, specifically openvt.c 了解其工作原理。