【发布时间】:2015-11-05 02:50:00
【问题描述】:
我正在尝试查看是否可以在inotifywait 中添加一个新功能,该功能在观察阶段跟踪未收到任何事件的目录列表,并在退出之前打印该列表。 截至目前,inotifywait 能够在收到事件的目录上显示。我正在寻找的是未收到任何事件的目录列表。
为了实现这一点,我采取了以下方法。
- 当 inotifywait 放置监视时,使用 hsearch_r 生成一个包含所有目录的数组和一个哈希表,其中 key 为目录名,使用函数
hadd,value 作为刚刚为该目录创建的数组元素的索引。 See code here - 当给定目录发生偶数时,我去step1中创建的哈希表,
hfind取出这个目录名对应的值(即数组元素的索引),并设置元素在数组中的那个索引处为 NULL。见search for hash key - 在退出 inotifywait 之前,我将打印数组中所有非 NULL 的元素。这实际上是没有从 inotifywait 收到任何 EVENT 的目录列表。
我看到的问题是,hadd 成功,并且对刚刚插入的元素的 hfind 的下一条语句有效。当 hsearch_r FIND 发生偶数时,上面的第 2 步失败。为了查看哈希表中有多少元素,我在执行hadd 之后,在hfind 中硬编码了一个目录名称。这仅在刚插入硬编码目录时通过。随后,下一次搜索失败,因为哈希表似乎已被下一个元素覆盖。
我希望有人能看出我哪里出错了。 我阅读了hsearch_r 的问题,并在那里进行了简短讨论后发布了一个新问题。
【问题讨论】:
-
“寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。 How to create a Minimal, Complete, and Verifiable example 不保证您提供的链接明天可以使用。这确保了代码可供未来的 SO 用户学习。