用户空间有printf(),内核空间有printk(),编写用户空间应用程序的时候,一般都用printk()。
printk()与printf()的一个重要区别就是前者可以指定消息的打印级别,内核根据这个指定的级别来决定是否将消息打印到终端上。如下表所示,printk()共有8个级别。
级别
描述
KERN_EMERG
紧急情况,系统可能会崩溃
KERN_ALERT
必须立即响应
KERN_CRIT
临界情况
KERN_ERR
错误信息
KERN_WARNING
警告信息
KERN_NOTICE
普通的但可能需要注意的信息
KERN_INFO
提示性信息
KERN_DEBUG
调试信息
如果没有指定消息的级别,printk()会使用默认的DEFAULT_MESSAGE_LOGLEVEL(通常是KERN_WARNING)。