[英]insmod printk doesn't work, but works for rmmod
由於我仍在學習內核模塊編程,因此無法找出問題背后的原因。 當我運行insmod hello.ko
, dmesg or /var/logs/message
不顯示/打印消息,而當我運行rmmod hello.ko
, dmesg or /var/logs/message
顯示/打印來自hello_init(void) and hello_exit(void)
。
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello World!!");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Bye World!");
}
module_init(hello_init);
module_exit(hello_exit);
printk
非常了解換行符。 printk(KERN_ALERT "Hello World!!");
不打印任何內容,因為它沒有換行符。 它等待下一個printk(KERN_CONT
作為該行的延續,並等待下一個prinkt(KERN_CONT
和換行符。它被打印在下一個printk(KERN_ALERT
因為然后printk
假定最后一行已經結束並打印。)。輸出后,立即在格式字符串中添加換行符。
所以就:
printk(KERN_ALERT "Hello World!!\n");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.