当前位置:  技术问答>linux和unix

readline非阻塞

    来源: 互联网  发布时间:2017-04-03

    本文导语:  /*自定制的read函数*/ ssize_t Readline(int fd, void *buf, size_t num) { ssize_t res; size_t n; char *ptr; n = num; ptr = (char *)buf; while (n > 0)  {  if ((res = read (fd, ptr, n)) == -1)  {   if (errno == EINTR) /*中断*/  ...


/*自定制的read函数*/
ssize_t Readline(int fd, void *buf, size_t num)
{
ssize_t res;
size_t n;
char *ptr;

n = num;
ptr = (char *)buf;
while (n > 0) 
{
 if ((res = read (fd, ptr, n)) == -1)
 {
  if (errno == EINTR) /*中断*/
     res = 0;
  else if (errno == ECONNRESET)
  {
  return 0;
  }
  else
  {
 ibslog(2, 5, __FILE__, __LINE__, "errno:[%d, %s]", errno, strerror(errno));
     return -1;
  }
 }
 else if (res == 0)
break;
 
 ptr += res;
 n -= res;
}

return (num - n);
}


我们再socket通讯时,一般都是加工一下read函数,然而当是阻塞模式的时候,这个没有问题,
如果是非阻塞的话,请问要注意什么诶?
是不是只需在if (errno == EINTR)的时候,再并上errno == EAGAIN呢?还需要注意其它什么不?

|
read 在非阻塞状态下如果没有数据可以读取,返回的是0.

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.io类linenumberreader的类成员方法: readline定义及介绍
  • readline问题
  • java命名空间java.io类bufferedreader的类成员方法: readline定义及介绍
  • readline
  • java命名空间java.io类datainputstream的类成员方法: readline定义及介绍
  • 求关于gnu readline library的文档!
  • java命名空间java.io类objectinputstream的类成员方法: readline定义及介绍
  • readline替代品 linenoise
  • java命名空间java.io类randomaccessfile的类成员方法: readline定义及介绍
  • readline 封装程序 rlwrap
  • java命名空间java.io类console的类成员方法: readline定义及介绍
  • 非常奇怪的IO,bufferedReader.readLine()问题。。。
  • java命名空间javax.imageio.stream类imageinputstreamimpl的类成员方法: readline定义及介绍
  • 操作系统 iis7站长之家
  • java命名空间javax.imageio.stream接口imageinputstream的类成员方法: readline定义及介绍
  • DataInputStream和BufferedReader的readLine方法
  • java命名空间java.io接口datainput的类成员方法: readline定义及介绍
  • BufferedReader中的确readLine()读不完?请大家帮帮小弟
  • warning: readLine() in java.io.DataInputStream has been deprecated请问
  • readline() 和 Forte for java 3
  • if( (n=Readline( sockfd,line,MAXLINE) )==0)为什么服务器接收到客户FIN时,Read返回的是0。,既然FIN被读出来了,为什么Read返回的是0


  • 站内导航:


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

    ©2012-2021,