gpt4 book ai didi

c - printk 是行缓冲的吗?

转载 作者:IT王子 更新时间:2023-10-29 01:02:16 26 4
gpt4 key购买 nike

在 Linux 应用程序级别,所有 printf 消息都转到 stdout,所有 err 消息都转到 stderr。在哪里

stderr 通常是无缓冲的,

标准输出是行缓冲的

所以在 kernel space 当我们使用 printk() 有或没有 KERN_ERR 和这样的其他级别指定宏时,这些消息是如何被缓冲的?

dmesg有没有独立的机制?

最佳答案

printk() 所做的只是简单地将几个字节添加到内存中的环形缓冲区中(如果到达缓冲区末尾则环绕)。所以,说它是否是行缓冲是没有意义的——这不适用。

此外,虽然在用户空间 stdout 中,stderr 有意义,但在内核和 printk() 中情况并非如此:它不写入 stdout 因为内核中没有这样的东西。

当然,有些东西负责实际将此环形缓冲区的内容传递给用户 - 无论是在串行控制台上打印它还是使用 dmesg 检索它,这通常会查找 LF 字符以单独的行。

关于c - printk 是行缓冲的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com