由于我仍在学习内核模块编程,因此无法找出问题背后的原因。当我运行insmod hello.ko
时,dmesg or /var/logs/message
不显示/打印消息,而当我运行rmmod hello.ko
时,dmesg or /var/logs/message
显示/打印来自hello_init(void) and hello_exit(void)
的字符串。 / p>
#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);
答案 0 :(得分:1)
printk
非常容易换行。 printk(KERN_ALERT "Hello World!!");
不打印任何内容,因为它没有换行符。它等待下一个printk(KERN_CONT
作为该行的延续,并等待下一个prinkt(KERN_CONT
与换行符。它被打印在下一个printk(KERN_ALERT
上,因为然后printk
假定最后一行已经结束并打印。如果要输出,请立即在格式字符串中添加换行符。
就这样:
printk(KERN_ALERT "Hello World!!\n");