我正在尝试在linux rhel5,内核2.6.18,glibc 2.5-18中使用iNotify。我没有将事件定义为一次拍摄,但出于某种原因,它表现得像我一样。影响是我必须在每次活动后重新添加手表。有人用过iNotify吗?另一个问题是事件对象中返回的掩码只包含一个标志:IN_ONE_SHOT。
答案 0 :(得分:0)
尽可能写出最小的例子并进行测试。如果它演示了您正在谈论的行为,请将其添加到您的问题中。如果它的行为正常,那么再添加一些代码并再次测试。继续重复,直到您重现错误或您的代码正常工作。我经常发现建立一个玩具程序会告诉我我在错误的地方做了什么我在大型程序中看不到。
答案 1 :(得分:0)
由于文件正在被删除,因此inotify可能会隐式删除手表。行为由the manual page巧妙地引用(请参阅IN_IGNORED事件部分)。您可以通过检查您拨打read
的inotify_event中是否设置了标志IN_IGNORED来检查是否发生这种情况。
另请参阅inotify delete_self when modifying and saving a file,了解为什么在您认为只是修改的过程中,如果您不知情或不采取行动,可能会删除该文件。