printk()会将打印信息存在内核的环形缓冲区log_buf[]里, 可以通过dmesg命令来查看log_buf[]
1.环形缓冲区log_buf[]又是存在内核的哪个文件呢?
位于/proc/kmsg里,所以除了dmesg命令查看,也可以使用cat /proc/kmsg来查看。
2.但是,dmesg命令和cat /proc/kmsg有所不同
2.1 dmesg命令
每次使用,都会打印出环形缓冲区的所有信息。
2.2 cat /proc/kmsg
只会打印出每次新的环形缓冲区的信息。
比如,第一次使用cat /proc/kmsg,会打印出内核启动的所有信息。
第二次使用cat /proc/kmsg,就不会出现之前打印的信息,只打印继上次使用cat /proc/kmsg之后的新的信息,比如下图所示:
3.接下来我们便进入内核,找/proc/kmsg文件在哪生成的
搜索"kmsg",找到位于fs\proc\proc_misc.c 文件的proc_misc_init()函数中,