Как следует из заголовка, как я могу сопоставить файловый ввод-вывод из файла на существующее устройство?

Я использую язык программирования более высокого уровня на одном из этих распространенных одноплатных компьютеров SoC под управлением Linux. Этот язык имеет библиотеку для доступа к последовательному порту для отправки TX и получения данных RX. Библиотека обращается к /dev/ttyAMA0 для чтения и записи, но, к сожалению, когда вы создаете объект Serial, она делает это, открывая /dev/ttyAMA0, используя исключительный доступ, запрещающий другим процессам или даже другим экземплярам объекта Serial использовать /dev/ttyAMA0. .

В моем случае я хотел написать две отдельные программы. Одна программа записывает в последовательный порт TX, а другая программа читает из последовательного порта RX, но эта библиотека не позволит этого, поскольку открывает /dev/ttyAMA0 с использованием монопольного доступа. Я думаю, что в Linux должна быть возможность создать второй или даже третий файл, который будет действовать как псевдотерминал или что-то в этом роде, принимать любые операции чтения или записи и просто сопоставлять весь доступ ввода-вывода к /dev/ttyAMA0.

Итак, мой вопрос: как я могу создать файл (или псевдотерминал) в Linux, который сопоставляет все операции чтения и записи с таким устройством, как /dev/ttyAMA0?

0
sysrpl 29 Май 2020 в 19:21

1 ответ

Предполагая, что /dev/ttyAMA0 является узлом устройства, вы потенциально можете создать дополнительные узлы с тем же старшим/младшим номером, которые будут отображаться на одно и то же устройство.

Например, чтобы сделать это для /dev/zero, узнайте, каковы основные и второстепенные числа:

carbon# ls -l /dev/zero 
crw-rw-rw- 1 root root 1, 5 May 29 02:16 /dev/zero

Старший номер 1, младший номер 5 и устройство символьное.

Создайте еще один узел устройства с такими же параметрами, возможно, как root:

mknod /dev/zero-dup c 1 5

Теперь вы можете использовать /dev/zero-dup как копию /dev/zero.

0
D. SM 30 Май 2020 в 03:07