1

我正在使用单个 inotify 文件描述符来监视许多繁忙目录中的多个事件,包括IN_MOVED_TOIN_MOVED_FROM.

我有一个循环调用read它(它会阻塞直到有数据要读取)并在事件发生时处理它们。

当一个文件在两个被监视的目录之间移动时,两个inotify_events 被写入 inotify 文件描述符:一个IN_MOVED_TO位设置为 in mask,一个为IN_MOVED_FROM,两者都具有相同的cookie

是否保证两个事件都将通过对 的相同调用进行缓冲read,或者我是否需要调用它一次来缓冲一个事件并再次缓冲下一个?

4

1 回答 1

2

AFAIK,没有这样的保证。
我们可以依赖的只是重命名操作中的两个事件( IN_MOVED_FROM, )与相同的. IN_MOVED_TOcookie

除上述之外的任何假设都是不可靠的,例如:

  • 这两个事件将依次发生(一个紧接着另一个)。
  • 这两个事件将一起出现在同一个read系统调用中。
于 2013-12-05T15:10:16.783 回答