linux - 在多线程程序中为 Inotify 添加 watch

标签 linux multithreading inotify

我想使用 inotify 来监控我的 C 程序中的一些文件。

我想知道让一个线程从 inotify 描述符(由 inotify_init 返回的)读取是否安全,从而阻塞直到某个事件发生,在此等待期间可能会添加新的在其他线程等待期间使用 inotify_add_watch 将文件发送到 watch 队列。

我是否需要同步这些操作或者这样做是否安全?

最佳答案

没有确切的答案,但我从经验中知道,如果不触发正在使用 inotify 的线程中的 read(),您甚至无法在另一个线程中打开文件。我记得读过你需要使用 inotify_init1() 和 IN_CLOEXEcflags来允许其他线程中的文件 io。不过,我不确定这是否意味着您实际上可以同时在多个线程中使用 inotify。

关于linux - 在多线程程序中为 Inotify 添加 watch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070165/

相关文章:

linux - 将当前项目添加到 SVN 但忽略某些文件类型

c - 检测父进程死亡

python - ITK 4.0 的构建和安装有完整的指南吗?

c++ - std::mutex 作为多线程的成员变量线程安全吗?

C++ 异步线程在调用线程完成时终止

java - java 类中的锁

linux - 使用结构来设置功能

c++ - 如何确保在完成写入之前不读取文件

database - 使用 inotify 跟踪系统中的所有文件

c - inotify 组 IN_MOVED_FROM 和 IN_MOVED_TO 吗?