当前位置:  技术问答>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中有一行这么写着:


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))

    
 
 

您可能感兴趣的文章:

  • if( (n=Readline( sockfd,line,MAXLINE) )==0)为什么服务器接收到客户FIN时,Read返回的是0。,既然FIN被读出来了,为什么Read返回的是0
  • 请教: read一个socket, read返回需要多长时间?
  • linux串口读取read函数始终返回值为1,没有返回读到的字符数
  • socket read返回问题
  • 为什么客户端断开连接后,read的返回值是0?
  • 【请教】read()返回的字节数远远小于write()返回的字节数,接收数据不完整。虚心求解
  • 牛人进啊!串口非阻塞模式打开,但read不能立即返回!
  • connect成功后返回的sockfd在以后read和write出错后是不是也要close一下啊?
  • int read(int,char*, sszie_t)函数返回的各种值分别表示什么?
  • 阻塞方式,read不返回!!!
  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • 调用read函数读取socket流时,为何返回值总是1
  • linux 下串口 问题, read 不是返回-1 就是不返回
  • linux下串口写成功了,但是读始终是失败,read返回是-1,但是同样的操作在windows上就可以。
  • linux 串口 read函数返回-1,请指教。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于epoll ET模式read的一些问题
  • 求救:修改fstab后不能启动了!可以使用single模式,但是显示file system是read-only!而且vi时显示unable to open swap file
  • C++ I/O 成员 read():读取字条符
  • 系统启动问题(read block from filesystem resulted in short read!)在线等!!!
  • java命名空间javax.swing类progressmonitorinputstream的类成员方法: read定义及介绍
  • read一个socket, 发现read到的长度是0, 是否一定代表对方调用了close关闭了socket?
  • java命名空间java.sql接口connection的类成员方法: transaction_read_uncommitted定义及介绍
  • 非阻塞打开设备文件,如果1秒read不到数据,想让read退出如何做?
  • java命名空间java.io类objectinputstream的类成员方法: readfully定义及介绍
  • linux 下的read命令重定向
  • java命名空间java.io类linenumberreader的类成员方法: read定义及介绍
  • cshell脚本中read的问题
  • java命名空间java.io接口objectinput的类成员方法: read定义及介绍
  • 我的模块的READ没有被调用
  • java命名空间java.io类objectinputstream的类成员方法: read定义及介绍
  • 关于shell read命令
  • java命名空间java.nio.channels类filechannel.mapmode的类成员方法: read_write定义及介绍
  • 请问 : read, 与recv 两个函数有什么区别啊?
  • java命名空间java.io类filterinputstream的类成员方法: read定义及介绍
  • 新手请教:while read中末尾的重定向表示什么意思?
  • java命名空间java.text类attributedcharacteriterator.attribute的类成员方法: reading定义及介绍
  • 关于read()的问题
  • java命名空间java.nio.channels类filechannel.mapmode的类成员方法: read_only定义及介绍
  • read 和write问题!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,