我在我的代码
中使用下面的linux read()函数 char buffer[1024];
size_t size = read( m_fd , buffer, 1024);
套接字描述符" m_fd"被设置为非阻塞,如下所示;
int flags = fcntl(m_fd, F_GETFL, 0);
fcntl(m_fd, F_SETFL, flags | O_NONBLOCK);
" m_fd"是套接字描述符,设置为"非阻塞"在我的情况下,我希望"尺寸" return变量的值为0,-1或读取的字符数(在我的情况下最多为buffersize 1024),如下所述;
成功时,返回读取的字节数(零表示结束 (文件),文件位置按此编号前进。它不是 如果此数字小于请求的字节数,则出错; 例如,这可能发生,因为实际可用的字节更少 现在(也许是因为我们接近文件结尾,或者因为我们 从管道或终端读取,或因为read()是 被信号打断了。出错时,返回-1,并设置errno 适当。在这种情况下,文件是否未指定 位置(如果有的话)改变。
但是在套接字描述符" m_fd"是新创建的,并且没有任何内容写入,read()函数返回非常大的值,如" 18446744073709551615"并将errno设置为EAGAIN。 我希望它能回归" -1"像在其他AGAIN案件中一样。
有人知道为什么读取这种行为?