printk是行缓冲的吗?

Jee*_*tel 3 c linux linux-kernel printk

在Linux应用程序级别上,所有printf消息都会转到stdout所有错误消息stderr.哪里

stderr通常是无缓冲的

stdout是行缓冲的

那么kernel space当我们使用printk() 或不使用KERN_ERR和其他级别指定宏时,这些消息是如何缓冲的?

不会dmesg有任何单独的机制?

mvp*_*mvp 8

所有这一切printk()确实是简单的几个字节添加到内存环形缓冲区(如果缓冲区年底达到环绕).因此,说它是否是行缓冲是没有意义的 - 这只是不适用.

而且,在用户空间中stdout,stderr有意义的是,在内核中并非如此printk():它不会写入,stdout因为内核中没有这样的东西.

当然,有些东西负责将这个环形缓冲区的内容实际传递给用户 - 无论是在串行控制台上打印它还是用它来检索它dmesg,这通常会寻找LF字符来分隔线条.