【发布时间】:2022-01-20 10:44:56
【问题描述】:
当 USB 1.1 设备连接或断开 USB 3.0 端口时,我在 ARM Linux 板上出现一些 USB 问题,在这种情况下会生成内核消息,例如:
[14720.301195@0] usb 1-1.4: urb 状态-32
这条消息确实淹没了系统日志,重复了数百次。我的应用程序需要尽快拦截此消息并执行一些操作,例如释放一些外围设备并重新实例化一些对象。由于仅在其他 USB 1.1 设备打开并正在使用时才会生成错误,因此一旦我释放它们,错误就会消失。这似乎是防止消息泛滥的唯一方法。
我尝试过对 bash 命令进行轮询:
tail -n 1 /var/log/syslog
但显然日志文件的更新速度不够快,即使我将 /var/log/ 挂载在 ram 磁盘 (ramfs) 中也是如此。
我不知道还有什么方法可以“连接”到系统日志并在消息生成后实时读取它们。
【问题讨论】:
-
如果您的内核是 3.5.0 或更高版本,则 kernel.org/doc/Documentation/ABI/testing/dev-kmsg 被
dmesg -w使用...假设这是内核消息。它确实看起来像一个。 -
内核版本为 4.9.277-76。谢谢你的链接,我去看看。
标签: c++ linux linux-kernel syslog