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

时间:2015-08-04 19:24:33

标签: linux operating-system

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

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

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

2 个答案:

答案 0 :(得分:2)

printk()是一个内核级功能,可以按<linux/kernel.h>中的定义打印到不同的 loglevels

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

  

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

More Information Here

答案 1 :(得分:1)

printf()C Standard Library

中的一项功能

如果您还没有访问C库,那么您想要使用printk()是正确的。 printk()为您提供printf()功能,否则您将无法使用它。

可以找到两者的良好比较here