Как использовать созданный драйвер символов ядра Linux из командной строки - PullRequest
0 голосов
/ 26 марта 2019

Я следовал руководству по программированию ядра Linux здесь: http://www.tldp.org/LDP/lkmpg/2.6/html/index.html

Я попал в раздел, посвященный "драйверам символьных устройств", и пока я его получилскомпилировать, он не будет работать в описанном случае:

"Вызывается, когда процесс записывает в файл dev: echo" hi "> / dev / chardev"

Я пробовал несколько консолей Linuxтакие команды, как:

echo "hi"> sudo / dev / chardev /

и

sudo sh -c 'printf "hi"> sudo / dev / chardev /'

Я запускаю свой код на Raspberry Pi 3 B +

Когда я запускаю первую команду, я ничего не получу взамен, и ничего не добавляется в / var / logs / messages

Когда я запускаю вторую команду, я получаю: sh: printf: Ошибка ввода-вывода

Полный код по адресу: http://www.tldp.org/LDP/lkmpg/2.6/html/x569.html

Я изменил код с помощью моегофрагмент ниже.

/*  
 * Called when a process writes to dev file: echo "hi" > /dev/chardev
 */
static ssize_t
device_write(struct file *filp, const char *buff, size_t len, loff_t * off)
{
    printk(KERN_INFO "%s\n", buff);
    return -EINVAL;
}

Я ожидаю, что когда я использую echo "hi"> sudo / dev / chardev, в моих / var / logs / messages появится строка, в которойmply говорит "привет".

1 Ответ

0 голосов
/ 27 марта 2019

echo "hi"> / dev / chardev

Это нормально.

echo "hi"> sudo / dev / chardev /

Это недействительно.Это будет echo hi /dev/chardev/ и записать это в файл с именем sudo.И не /dev/chardev/, это не каталог, это файл, это /dev/chardev (без / в конце).

sudo sh -c 'printf "hi "> sudo / dev / chardev / '

Та же ошибка, что и выше.

Если вы хотите добавить файл, используя sudo, используйте tee, как в echo hi | sudo tee /dev/chardev.Или если вам нужно sudo sh -c 'echo "hi" > /dev/chardev'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...