可以在一个连接的套接字读取()函数返回零字节?

我知道read()是一个阻塞调用,除非我使套接字非阻塞。 所以我期望read()调用请求4K的数据应该返回一个正值(读取的字节数)或错误-1(客户端可能的连接重置等)。 我的问题是:可以read()在任何情况下返回“0”?

我这样处理read():

if ((readval = read(acceptfd, buf, sizeof(buf) - 1)) < 0) { } else { buf[readval] = 0; //Do some thing with data } 

这个代码炸弹,如果read()返回零,我知道如何解决它。 但是有可能read()返回零吗?

Solutions Collecting From Web of "可以在一个连接的套接字读取()函数返回零字节?"