使用libevent检测非阻塞磁盘文件描述符的读/写准备(对于通过强制锁定获取的文件),我遇到了以下问题:
当一个文件被另一个进程锁定为IO时,当我发出读/写调用时,我在当前进程中获得了EAGAIN,这完全符合API的记录行为。
但是,当这些FD由libevent轮询为IO就绪时,它们被检测为IO就绪,这导致我的回调被调用。
我一直试图为此找到解决方案,但我不知道我是否正在寻找正确的线路。是否可以避免这些电话?
答案 0 :(得分:0)
与常规文件关联的文件描述符应始终为准备读取,准备写入和错误条件选择为true。
不确定是否有更好的方法,而不是产生阻塞该文件描述符的线程,然后在解锁文件时将事件发回给您的I / O线程。
inotify提供文件打开或关闭时的事件,但不幸的是,在锁定或解锁时不提供。