insmod printk 不起作用,但适用于 rmmod
insmod printk doesn't work, but works for rmmod
由于我还在学习内核模块编程,无法弄清楚问题背后的原因。当我 运行 insmod hello.ko
, dmesg or /var/logs/message
不 show/print 消息,而当我 运行 rmmod hello.ko
, dmesg or /var/logs/message
shows/print 来自 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");
由于我还在学习内核模块编程,无法弄清楚问题背后的原因。当我 运行 insmod hello.ko
, dmesg or /var/logs/message
不 show/print 消息,而当我 运行 rmmod hello.ko
, dmesg or /var/logs/message
shows/print 来自 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");