【问题标题】:Linux iNotify one shot and event mask problemLinux iNotify one shot 和 event mask 问题
【发布时间】:2010-10-26 23:29:42
【问题描述】:

我正在尝试在 linux rhel5、内核 2.6.18、glibc 2.5-18 中使用 iNotify。我没有将事件定义为一枪,但出于某种原因,它的行为就像我做了一样。影响是我必须在每次活动后重新添加手表。有人用过 iNotify 吗?另一个问题是事件对象中返回的掩码只包含一个标志:IN_ONE_SHOT。

【问题讨论】:

  • 你能展示一小段代码吗?
  • 试试 strace。这是检查您的代码是否正在执行您期望的系统调用的好方法。

标签: linux filesystems glibc inotify


【解决方案1】:

尽可能写出最小的例子并进行测试。如果它证明了您正在谈论的行为,请将其添加到您的问题中。如果它表现正常,则添加更多代码并再次测试。不断重复,直到您重现错误或您的代码正常工作。我经常发现构建一个玩具程序可以准确地告诉我我做错了什么,而我在更大的程序中看不到。

【讨论】:

    【解决方案2】:

    很可能 inotify 正在隐式删除监视,因为正在删除文件。 the manual page 巧妙地引用了该行为(请参阅有关 IN_IGNORED 事件的部分)。您可以通过检查是否在调用 read 填充的 inotify_event 中设置了标志 IN_IGNORED 来检查是否发生这种情况。

    另请参阅inotify delete_self when modifying and saving a file,了解为什么在您认为只是修改的过程中,文件可能会在您不知情或不采取行动的情况下被删除。

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 2015-04-03
      • 2018-04-05
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 2023-02-01
      相关资源
      最近更新 更多