现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

linux下 O_NONBLOCK与O_NDELAY的区别

2019-01-05 21:27 工业·编程 ⁄ 共 298字 ⁄ 字号 暂无评论

与“非阻塞模式”相关的有两个 标志,就是 O_NONBLOCK与O_NDELAY,这两种参数的结果都是使I/O操作设置为“非阻塞模式”,也就是non-blocking,当进行read/write操作时,不管结果如何,都会马上返回,而不会阻塞。

他们的区别是:在read时,如果读不到数据,O_NDELAY会返回0,由于正常读取到文件末尾时,也会返回0,这样就无法区分是否是遗产隔离所以就引入了O_NONBLOCK,在读不到数据时,返回-1,并且设置errno为EAGAIN,而读到结尾处,正常返回0.

O_NDELAY是早期的版本,虽然兼容,但是仍然推荐使用O_NONBLOCK代替O_NDELAY.

 

给我留言

留言无头像?