LINUX.ORG.RU

Может ли синхронный/блокирующий read() последовательного порта в какой нибудь ситуации вернуть 0?

 , ,


1

3

Последовательный порт открыт в raw режиме, а в man 2 read написано что «zero indicates end of file», а прерывание из-за полученного сигнала возвращает -1. Стоит ли делать лишнюю (или не лишнюю) проверку на 0?


P.S. man:

RETURN VALUE

On success, the number of bytes read is returned (zero indicates end of file), and the file position is advanced by this number. It is not an error if this number is smaller than the number of bytes requested; this may happen for example because fewer bytes are actually available right now (maybe because we were close to end-of-file, or because we are reading from a pipe, or from a terminal), or because read() was interrupted by a signal. On error, -1 is returned, and errno is set appropriately. In this case it is left unspecified whether the file position (if any) changes.

★★★

Последнее исправление: normann (всего исправлений: 1)

В твоем случае нужно читать документацию на драйвер порта и его исходники.

Кроме ситуации описаной в предыдущем посте, 0 возвращается если на вход RX поступил break.

cvv ★★★★★
()
Последнее исправление: cvv (всего исправлений: 2)
Ответ на: комментарий от cvv

Кроме ситуации описаной в предыдущем посте, 0 возвращается если на вход RX поступил break.

А это при каких случаях? Ведь либо IGNBRK, либо BRKINT, про BRKEOF что-то я не слышал.

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

Нет. Если у меня будет свободное время - я загуглю пруфы. Гдето на StackOverflow были

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