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