LINUX.ORG.RU

Поток от устройств через /dev/input/event. Где здесь EOF???

 , , ,


0

1

Добрый день.

Насколько понимаю, поток от /dev/input/event не имеет EOF. Поэтому, когда данные от устройства полностью считываются, программа переходит в режим ожидания этого потока, т.е. останавливается. Как только поток событий от event возобновляется, разумеется, программа оживает.

Как можно отслеживать исчерпание данных, чтобы, пока данных от устройства не поступает, параллельно можно было бы выполнять и остальные задачи помимо чтения /dev/input/event.

Что пробовал: - feof, fscanf (результат: для движения нужен поток от event); - линуксовские пайпы (результат: для движения нужен поток от event); - перекладывание работы с /dev/input/event в отдельный поток (результат: для движения нужен поток от event); - перекладывание работы с /dev/input/event в отдельный демон (daemon) с передачей результата в основную программу через переменную окружения (сильно загружается CPU, это даже видно по выводимой на экран информации).

Заранее благодарен.

open() (потом fdopen()) с O_NONBLOCK. При этом read()/fread() «прочитает» 0 байт, когда больше нет доступных данных.

Или fileno() + select(), тоже должно работать.

В общем, смотреть в сторону методов проверки наличия данных для чтения.

xaizek ★★★★★
()
Ответ на: комментарий от egorcod

Не совсем драйвер, скорее обработчик тачскрина. Просто у меня Raspberry с X-сервером, но без GUI (он не нужен). Поставить штатный драйвер тачскрина никак не получилось. Поэтому пришлось писать свой обработчик.

maratus
() автор топика
Ответ на: комментарий от xaizek

xaizek, спасибо большое за совет. Попробую вашу версию проверить.

maratus
() автор топика
Ответ на: комментарий от maratus

Поставить штатный драйвер тачскрина никак не получилось.

какой тачскрин ? судя по тому что event device для него есть это USB и эмулирует мышь (перемещение), а не настоящий тачскрин который передает абсолютные координаты.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.