Я пишу приложение для Ubuntu Linux на C++ для чтения данных из последовательного порта. Он успешно работает благодаря моему коду, вызывающему select()
, а затем ioctl(fd,FIONREAD,&bytes_avail)
, чтобы узнать, сколько байтов доступно, прежде чем окончательно получить данные, используя читать()
.
Мой вопрос таков: каждый раз, когда select
возвращается с данными, количество доступных байтов сообщается как 8. Я предполагаю, что это размер буфера, установленный где-то, и этот выбор возвращает уведомление пользователю когда этот буфер заполнен.
Я новичок в Linux как разработчик (но не новичок в C++), и я пытался исследовать (без успеха), возможно ли изменить размер этого буфера, и действительно ли мои предположения верны. В моем приложении время имеет решающее значение, и мне нужно получать оповещения всякий раз, когда в буфере чтения появляется новый байт. Возможно ли это, не вникая в код ядра?