inotify_add_watch 是不是按升序返回监视描述符?

Posted

技术标签:

【中文标题】inotify_add_watch 是不是按升序返回监视描述符?【英文标题】:Does inotify_add_watch return watch descriptors in ascending order?inotify_add_watch 是否按升序返回监视描述符? 【发布时间】:2018-04-30 11:31:17 【问题描述】:

inotify_add_watch 返回一个 int。

我想将我正在观看的路径的字符串存储在一个数组中,并希望通过 inotify_add_watch 的返回值对它们进行索引。

我做了一个小规模测试(有 10 个文件),它似乎按升序(1、2、3、4...)返回它们。

这是有保证的吗?

【问题讨论】:

好吧,does the manual say so? 我不这么认为,因此不要依赖它,如果没有记录,这是一个实现细节。 【参考方案1】:

the documentation 中的任何内容都无法保证。

其实这种情况:

如果文件系统对象已被监视(可能通过指向同一对象的不同链接),则返回现有监视的描述符。

似乎将答案直接定为“否”。

您会依赖open 按升序返回文件描述符吗?这是同样的情况。

【讨论】:

open 实际上必须始终返回最低的可用 fd。这是一个记录的要求,所有分配 fd 的函数都应该这样做。但是,如果其他代码可以通过在两者之间/同时打开和关闭 fds(线程、库函数、信号处理程序......),这在很大程度上是一个毫无意义的要求 @R.. 好点。但是,是的,我的观点是open 返回的序列不是单调递增的,因为close 被调用的可能性。

以上是关于inotify_add_watch 是不是按升序返回监视描述符?的主要内容,如果未能解决你的问题,请参考以下文章

unnest 是不是始终在 Bigquery 中按命中数的升序显示数据

redis sorted set

redis sorted set

推送到 bitbucket 时出现错误“inotify_add_watch”

按日期升序排列的日期栏频率条形图

inotify,inotify_add_watch() 监控多个目录,c++