Linux kernel 为什么我的printk消息最近在日志文件中更新?

Linux kernel 为什么我的printk消息最近在日志文件中更新?,linux-kernel,linux-device-driver,kernel,Linux Kernel,Linux Device Driver,Kernel,我编写了一个简单的模块,如下所示: #include<linux/module.h> #include<linux/kernel.h> static int __init own_init(void) { printk(KERN_INFO "Hi"); return 0; } static int __exit own_exit(void) { printk(KERN_INFO "bye"); } module_init(own_init);

我编写了一个简单的模块,如下所示:

#include<linux/module.h>
#include<linux/kernel.h>


static int __init own_init(void)
{

    printk(KERN_INFO "Hi");

    return 0;
}

static int __exit own_exit(void)
{
printk(KERN_INFO "bye");

}

module_init(own_init);
module_exit(own_exit);

MODULE_LICENSE("GPL");
#包括
#包括
静态int\uu init own\u init(void)
{
printk(KERN_INFO“Hi”);
返回0;
}
静态整数退出自身退出(无效)
{
printk(KERN_信息“再见”);
}
模块_init(自身_init);
模块退出(自身退出);
模块许可证(“GPL”);
安装此模块后,我希望,但未显示。 但当我卸下模块时,会显示Hi。 当我再次插入时,将显示“再见”

所以有一个滞后


为什么会这样?

发生这种情况是因为您忘记了日志消息末尾的换行符。当内核输出部分消息时(通过向
printk()
传递一个不以换行符结尾的字符串),日志系统将缓冲文本,直到消息的其余部分到达。另请参见-。

如果在文本中添加行终止,即“\n”,会发生什么情况?现在可以正常工作了。真蠢。