11.4. При чтении из stdin, который на самом деле является последовательной линией связи, читаются не все символы.

Проверьте коммуникационный адаптер какой-либо терминальной программой (tip, cu). Если с портом все в порядке, то скорее всего, вы забыли перевести поток в raw-режим. Посмотрите страницы Справочника по terminfo, stty.

Для эффективной работы также посмотрите системный вызов poll/select.