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

Ker*_*nel 3 kernel linux-device-driver linux-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);
module_exit(own_exit);

MODULE_LICENSE("GPL");
Run Code Online (Sandbox Code Playgroud)

安装此模块后,我希望你好,但不显示.但是在移除模块时,会显示Hi.当我再次插入时,显示再见.

所以有一个滞后.

这是为什么?

小智 5

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