当前位置: 技术问答>linux和unix
read在非堵塞下模式下没有数据 不返回-1
来源: 互联网 发布时间:2017-04-28
本文导语: 在man中有一行这么写着: When attempting to read a file (other than a pipe or FIFO) that supports non-blocking reads and has no data currently available: * If O_NONBLOCK is set, read() shall return -1 and set...
在man中有一行这么写着:
也就是 如果是非堵塞的读在没有数据的时候 应该是要返回-1并且把errno设置成EAGAIN的才对
但是在实际使用中 发现并不会返回-1 反而只是单单返回个0 并且errno也没被设置
代码如下:
When attempting to read a file (other than a pipe or FIFO) that supports non-blocking reads and
has no data currently available:
* If O_NONBLOCK is set, read() shall return -1 and set errno to [EAGAIN].
也就是 如果是非堵塞的读在没有数据的时候 应该是要返回-1并且把errno设置成EAGAIN的才对
但是在实际使用中 发现并不会返回-1 反而只是单单返回个0 并且errno也没被设置
代码如下:
#include
#include
#include
#include
#include
#define FILE_NAME "/tmp/cctemp"
int main(void)
{
int num;
if((num=open(FILE_NAME,O_RDONLY|O_NONBLOCK,0))==-1)
{
printf("打开文件出错 n");
printf("%m n",errno);
return -1;
}
char buffer[1024];
int size;
while(1)
{
if((size=read(num,buffer,1024))