Я знаю, что read() является блокирующим вызовом, если я не делаю сокет неблокирующим. Поэтому я ожидаю, что вызов read() запросит 4K данных, чтобы вернуть положительное значение (нет байтов) или -1 при ошибке (возможное соединение reset с клиентом и т.д.). Мой вопрос: Может ли() возвращать '0' по любому поводу?
Я обрабатываю read() следующим образом:
if ((readval = read(acceptfd, buf, sizeof(buf) - 1)) < 0)
{
}
else
{
buf[readval] = 0;
//Do some thing with data
}
Этот код бомбит, если read() возвращает ноль, и я знаю, как его исправить. Но возможно ли read() вернуть ноль?