在多线程程序中将监视添加到Inotify

And*_*dna 6 linux multithreading inotify

我想使用inotify监视我的C程序中的一些文件.

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

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

Sye*_*d H 1

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