我创建了一个基本的Linux内核模块,该模块执行以下操作:
static __init int init(void)
{
printk(KERN_DEBUG "Banana");
return 0;
}
而且当然:
module_init(init);
奇怪的是,我通过插入模块后找不到字符串“ Banana”
insmod banana_module.ko
命令
dmesg -k | grep Banana
不返回任何东西。
但是,当我卸下模块并再次插入时,可以找到它。然后我找到了两个香蕉,一个来自之前,另一个来自当前插入。这是由于冲洗问题引起的吗?我发现这种行为有些奇怪,无法在互联网上找到类似的问题。
顺便说一句,这同时发生在台式机和笔记本电脑(没有VM)上的虚拟机上。
那么,为什么内核不像香蕉呢?
我已经弄清楚了问题所在:
我没有在内核消息末尾指定结尾字符\ n。如果不考虑它,它的行为将如上所述。原因是,内核消息被视为仅在完成时才打印出的记录。有关更多信息,请参见有关printk问题的本文。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句