Linux
模組延遲列印到核心日誌
我創建了一個基本的 linux 核心模組,它執行以下操作:
static __init int init(void) { printk(KERN_DEBUG "Banana"); return 0; }
而且當然:
module_init(init);
奇怪的是,我通過插入模組後找不到字元串“香蕉”
insmod banana_module.ko
命令
dmesg -k | grep Banana
不返回任何東西。
但是,當我卸下模組並重新插入時,我可以找到它。然後我找到了兩個香蕉,一個來自之前的,一個來自目前插入的。這是因為沖洗問題嗎?我覺得這種行為有點奇怪,在網際網路上找不到類似的問題。
順便說一句,這發生在我桌面上的虛擬機和筆記型電腦上(沒有虛擬機)。
那麼,為什麼核心不喜歡香蕉呢?
我已經弄清楚問題出在哪裡:
我沒有在核心消息的末尾指定結束符 \n。如果您將其排除在外,則其行為與上述類似。原因是,核心消息被視為僅在完成時才列印出來的記錄。有關更多資訊,請參閱有關 printk 問題的文章