【问题标题】:ncurses disable kernel messages on console screen?ncurses 在控制台屏幕上禁用内核消息?
【发布时间】:2016-04-26 20:33:53
【问题描述】:

我正在寻找一种方法来摆脱我的 ncurses 应用程序中出现的(内核?)消息。我自己编写了应用程序,所以我更喜欢将这些消息重定向到 /dev/null 的 API。我的意思是消息,例如插入的 USB 记忆棒。

我尝试添加这个,但不幸的是它不起作用

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

我没有运行 X,只是直接从控制台运行 ncurses。

我的意思是诸如插入的 USB 记忆棒之类的消息。

谢谢!

更新 1: 有人投票结束这个问题,因为它与编程无关。但它是,我自己编写了 ncurses 应用程序,我正在寻找一种方法来禁用内核消息。我更新了问题。

更新 2: 让我解释一下我在做什么,以及更详细的问题:

我正在使用 Tiny Core linux,那是在引导启动(自写)ncurses 程序之后。现在,例如,当您连接 USB 驱动器时,我的程序上会显示一条消息(我怀疑是内核)。我猜消息是直接写入帧缓冲区的。我正在使用 TC 5.x,因为我需要 32 位,我以 root 身份运行并且可以完全访问操作系统。

【问题讨论】:

  • 转到另一个虚拟控制台,例如使用 CTRL-ALT-F2,然后在那里登录?
  • @ThomasPadron-McCarthy,不幸的是 KIOSK 应用程序,所以我不知道如何让它工作?
  • dmesg --console-off?
  • 试过(dmesg --console-off),它不起作用:(
  • 您不能使用openvt 创建一个新的虚拟终端来运行您的程序吗?

标签: linux ncurses


【解决方案1】:

您应该能够使用openvt 让您的程序在新的虚拟终端上运行。

我还要注意,如果您希望打破外部依赖关系,应该可以自己嵌入对 VT 的控制,但请注意,使用的结构在内核版本之间可能不稳定,并且可能需要重新编译。 请参阅 KBD project's 来源,特别是 openvt.c 以了解其工作原理。

【讨论】:

    【解决方案2】:

    尝试使用以下选项通过引导参数配置内核:

    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

    【讨论】:

    • 我已经将它设置为 loglevel=1,我正在运行 tiny-core linux。我没有效果。
    【解决方案3】:

    可能无法阻止具有足够访问权限的其他进程写入 /dev/console,但您可以在引导时通过设置 console=ttyS0(第一个串行端口)将控制台重新定义为其他设备,请参阅:

    https://unix.stackexchange.com/questions/60641/linux-difference-between-dev-console-dev-tty-and-dev-tty0

    此外,如果我们确切知道发送消息的软件是什么,则可以重新配置它(可能是动态的),但了解您正在使用的 Tiny Core Linux 的版本和版本会有所帮助吗?

    例如本网站有“Core”、“TinyCore”和“CorePlus”版本 1.x 到 7

    http://tinycorelinux.net/downloads.html

    这将有助于重现完全相同的行为并测试潜在的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 2022-11-14
      • 2010-09-27
      相关资源
      最近更新 更多