EWOULDBLOCK和EAGAIN
来源:互联网 发布:伦铜库存数据 编辑:程序博客网 时间:2024/06/06 05:47
#define EAGAIN 11 /* Try again */#define EINTR 4 /* Interrupted system call */#define EWOULDBLOCK EAGAIN /* Operation would block */
EWOULDBLOCK用于非阻塞模式,不需要重新读或者写
EINTR指被中断唤醒,需要重新读/写
在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。
从字面上来看,是提示在试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以O_NONBLOCK的标记打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。此时程序不会阻塞起来等待数据准备就绪返回,read函数会返回一个错误EAGAIN,提示你的应用程序现在没有数据可读请稍后再试。
又例如,当一个系统调用(比如fork)因为没有足够的资源(比如虚拟内存)而执行失败,返回EAGAIN提示其在调用一次(也许下次就能成功)。
linux-非阻塞socket编程处理EAGAIN错误
在linux进行非阻塞的socket接受数据时经常出现Resource temporarily unavailable,errno代码为11(EAGAIN),这是什么意思?
这表明你在非阻塞模式下调用了阻塞操作,在该操作没有完成就返回这个错误,这个错误不会破坏socket的同步,不用管它,下次循环接着recv就可以。对非阻塞socket而言,EAGAIN不是一种错误。在VxWorks和Windows上,EAGAIN的名字叫做EWOULDBLOCK。
阅读全文
0 0
- EWOULDBLOCK和EAGAIN
- EWOULDBLOCK = EAGAIN
- 非阻IO与EWOULDBLOCK EAGAIN
- 非阻IO与EWOULDBLOCK EAGAIN
- Linux错误码EAGAIN与EWOULDBLOCK
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接
- 关于 EWOULDBLOCK 和 read 返回 -1
- Windows 安装 Scrapy
- 基于MapReduce的并行k-means聚类
- 无人机项目外篇-在NanopiM1跟T3的debian8上移植ROS
- Scrapy入门实例
- 云计算的概念及关键技术
- EWOULDBLOCK和EAGAIN
- CG中的几何学——与点和向量相关的计算方式【3】
- [李景山php] 销毁进程 wait 及 waitp 函数
- 生产者—消费者模型
- 每段时间Android开发10个知道(基础系列)-170527
- jq的操作
- iOS UITableView 常用方法集合
- c++实现双向有序链表的,增,删,查,合并
- “玲珑杯”线上赛 Round #15 河南专场:C -- 咸鱼魔法记