Linux inotify 与文件锁的关系
核心结论
事件与锁的对应关系
| inotify 事件 | 含义 | 与文件锁的关系(劝告式) | 与文件锁的关系(强制式) |
|---|---|---|---|
| IN_ACCESS | 文件被读 | 读锁允许多个并发读;读不会阻塞写锁等待者 | 读会被写锁阻塞 |
| IN_MODIFY | 文件被写 | 写锁排斥其他读写;无锁进程写入仍触发事件 | 写被读/写锁阻塞,事件可能在持有锁的进程释放后集中出现 |
| IN_ATTRIB | 元数据变更(如 chmod/chown/touch) | 与数据锁无直接冲突,但可能伴随打开/关闭 | 同上 |
| IN_CLOSE_WRITE | 以写方式打开的文件被关闭 | 常用于“写完成”的协作点:获取写锁→写→关闭触发事件→释放锁 | 同上 |
| IN_CLOSE_NOWRITE | 以只读方式打开的文件被关闭 | 与锁关系不大 | 与锁关系不大 |
| IN_CREATE/IN_DELETE/IN_MOVED_FROM/IN_MOVED_TO | 目录项增删/移动 | 与锁无直接冲突;目录上的锁(若支持)影响创建/删除 | 同上(强制锁生效时影响所有进程) |
典型协同用法
常见误区与注意
实践建议