打开串口设备使用O_NDELAY和O_NONBLOCK的区别

nuvoton2022 |浏览124次
收藏|2023/08/25 16:38

满意回答

2023/08/25 16:41

O_NONBLOCK和O_NDELAY所产生的结果都是使I/O变成非阻塞模式(non-blocking),在读取不到数据或是写入缓冲区已满会马上return,而不会阻塞等待。

它们的差别在于:在读操作时,如果读不到数据,O_NDELAY会使I/O函数马上返回0,但这又衍生出一个问题,因为读取到文件末尾(EOF)时返回的也是0,这样无法区分是哪种情况。因此,O_NONBLOCK就产生出来,它在读取不到数据时会回传-1,并且设置errno为EAGAIN。


Nuvoton_N329

其他回答(0)
0人关注该问题
+1
 加载中...