【问题标题】:Difference between Printk() and Printf() in LinuxLinux 中 Printk() 和 Printf() 的区别
【发布时间】:2015-10-27 08:22:22
【问题描述】:

我是 Linux 操作系统的新用户,目前正在学习如何使用它。我正在研究 OS 调试 和相关主题,作为基本的调试工具,建议打印出有关系统状态的某些信息。

这个任务可以通过上面提到的函数printf()printk()来完成,并且发现“k”代表内核,是某种“原始”形式的打印函数。此外,printf() 是由 C 库而不是内核提供的(不完全确定其含义)。

我想知道使用它们中的任何一个除了明显的优势之外是否还有其他优势(即在启动的早期阶段使用printk(),因为printf() 尚不可用)。两者同时使用能否获得相同的信息?

【问题讨论】:

    标签: linux operating-system


    【解决方案1】:

    printk() 是一个内核级函数,它能够打印到<linux/kernel.h> 中定义的不同loglevels

    printf() 将始终打印到文件描述符 - STD_OUT

    printk()printf() 之间的主要区别在于前者指定日志级别的能力。内核使用日志级别来决定是否将消息打印到控制台。内核在控制台上显示所有日志级别低于指定值的消息。

    More Information Here

    【讨论】:

    • 链接已失效。 404.跨度>
    【解决方案2】:

    printf()C Standard Library中的一个函数

    如果您还没有访问 C 库的权限,您希望使用 printk() 是正确的。 printk() 为您提供 printf() 功能,否则您将不会拥有它。

    两者的比较好找here

    编辑注释 - replaced dead link 带有静态存档版本

    【讨论】:

    • 第二个链接失效了。 404.跨度>
    猜你喜欢
    • 2015-01-20
    • 2017-07-03
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多