检查使用O_NONBLOCK打开的文件描述符是否准备就绪

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查使用O_NONBLOCK打开的文件描述符是否准备就绪相关的知识,希望对你有一定的参考价值。

情况:在POSIX环境中,我使用一个串口库,它通过open(...)打开一个设备,并设置了O_NONBLOCK标志。作为open调用状态的手册页,open本身不会阻止此标志。

问题:我需要在打开端口后立即刷新串口的输入缓冲区。然而,当我执行刷新操作(文件打开尚未完成)时,串口可能还没有准备好。

问题:在POSIX中准备就绪之前,有没有办法阻止非阻塞文件描述符?

谢谢!

答案

您可以使用以下系统调用之一等待打开时获得的文件描述符准备好:选择poll epoll

以上是关于检查使用O_NONBLOCK打开的文件描述符是否准备就绪的主要内容,如果未能解决你的问题,请参考以下文章

如何检查串口是否在Linux中打开?

read() 不会阻塞在没有 O_NONBLOCK 标志的情况下打开的空 FIFO

Java Flight Recorder - 查找文件描述符泄漏

如何检查所有弹簧占位符是不是存在?

从 ipc fifo 文件描述符读取缓冲区时未初始化 QDataStream

驱动程序如何支持非阻塞读写操作