我知道 read() 是一个阻塞调用,除非我使套接字非阻塞。所以我希望请求 4K 数据的 read() 调用应该返回一个正值(读取的字节数)或错误时返回 -1(客户端可能重置连接等)。我的问题是: read() 在任何情况下都可以返回“0”吗?
我正在以这种方式处理 read() :
if ((readval = read(acceptfd, buf, sizeof(buf) - 1)) < 0)
{
}
else
{
buf[readval] = 0;
//Do some thing with data
}
如果 read() 返回零并且我知道如何修复它,则此代码会爆炸。但是 read() 有可能返回零吗?