не может повторить или кошка из файла устройства, который был создан mknod - PullRequest
0 голосов
/ 24 мая 2019

Я создал символьный файл устройства в папке /dev/ следующим образом:

mode_t mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH|S_IFCHR;

const char * pathname = "/dev/tty.myown;"

int res = mknod(pathname, mode, 0);

Он успешно создал файл символьного устройства. Поэтому я позвонил на него cat, позвонив cat /dev/tty.myown, а затем попытался отправить ему сообщение, выполнив: echo "hello world" > /dev/tty.own. Однако сообщение не было отображено в потоке cat. Мне было интересно, какие другие настройки мне нужно установить для этого файла, чтобы можно было читать из этого файла устройства

1 Ответ

2 голосов
/ 24 мая 2019

Стандарт POSIX (.1-2001) гласит:

Единственное переносимое использование mknod () - это создание специального файла FIFO. Если mode не S_IFIFO или dev не 0, поведение mknod () не определено

Вы пытаетесь создать специальный символьный файл (т.е. не S_IFIFO). В частности, в Linux устройство с номером 0 является нулевым устройством , которое не должно делать абсолютно ничего. Если вы хотите FIFO, установите S_IFIFO вместо S_IFCHR.

...