C中的锁定文件或目录

Chr*_*lli 0 c linux

我有一个守护程序,它监视某个文件的更改,然后处理对该文件所做的更改.

但是现在我注意到当我尝试读取文件时(使用fgets)我没有数据.这只发生在对文件进行更改后才会发生,但如果我在任何其他时间尝试读取该文件,我可以正常阅读.

我认为另一个进程在我尝试读取时锁定了文件.如何确定文件是否已锁定?

Dav*_*ave 5

当fgets()为EOF返回NULL时,它设置了一个条件,您需要使用clearerr()清除它,尽管存在其他数据.(Linux上唯一常见的文件锁定类型是建议性的,因此很可能不是您的问题.inotify可能是检测文件更改的更好解决方案.http://en.wikipedia.org/wiki/Inotify)