Не получается вывод после dmesg

Я новичок. Я написал модуль hello world (фактически скопированный из книги О'Рейли). код:

#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
    printk(KERN_ALERT "\nHello World");
    return 0;
}

static void hello_exit(void)
{
    printk(KERN_ALERT "\nGood bye");
}

module_init(hello_init);
module_exit(hello_exit);

Так что, когда я вставлю модуль, появится dmesg nothig. Но когда я удаляю его, а затем dmesg, я вижу

Hello World

Good Bye
0
задан 16.05.2020, 03:11

1 ответ

Это вызвано тем, что буфер не очищен при печати "\nHello мира" и очищенный в конечном счете при удалении модуля.

Для преднамеренной очистки буфера вместо этого распечатайте

Hello world\n

и точно так же

Good bye\n

Примечание новая строка \n в конце каждого printk оператор.

Отсылают к этому ТАК вопрос знать, почему новая строка необходима:

2
ответ дан 16.05.2020, 03:11

Теги

Похожие вопросы