printk()函数和printf()函数的主要区别是前者可以指定一个记录级别,内核根据这个级别来判断是否在终端上打印消息。 可供使用的记录等级有7个,从KERN_EMERG(定义为"<0>")到KERN_DEBUG(定义为"<7>")。 如:printk(KERN_WARNING "This is a warning\n"); 如果你不对printk()函数指定一个记录等级,内核会选择默认的记录等级DEFAULT_MESSAGE_LOGLEVEL。 当前终端也有一个记录等级console_loglevel。内核会打印出记录等级比当前console_loglevel小(等级更高)的消息。 记录等级定义在文件<linux/kernel.h>中。