Linux中Printk()和Printf()的区别

6

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

这个任务可以通过提到的函数printf()printk()来完成,并发现"k"代表内核,是一种某种程度上的"原始"打印函数。同样,printf()由C库而不是内核库提供(对此的意义不完全确定)。

我想知道除了明显的优势(即在启动早期使用printk(),因为printf()尚不可用),是否还有其他使用它们之一的好处?使用这两个函数时,是否可以获得相同的信息?

2个回答

5

printk()是一个内核级别的函数,具有输出到<linux/kernel.h>中定义的不同日志级别(loglevels)的能力。

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

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

更多信息请查看此处


链接失效了。404。 - SIGSTACKFAULT

4

printf()C标准库中的一个函数。

如果您还没有访问C库,您确实希望使用printk()。在没有其他选择的情况下,printk()为您提供了printf()功能。

这两者的良好比较可以在这里找到。

编辑说明- 用静态存档版本替换死链接


3
第二个链接已失效,404。 - SIGSTACKFAULT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接