问题标签 [kqueue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5072 浏览

cocoa - 如何在可可中获取文件夹更改通知(文件夹监视程序)

我是 Cocoa 应用程序开发的新手。我希望在修改给定目录下的任何文件时通知我的应用程序(文件夹观察程序)。修改意味着删除,添加,文件内容被改变。我也尝试使用 FSEvents 并使用 NSWorkspace 的通知中心或在http://www.zathras.de/angelweb/sourcecode.htm#UKKQueue中的 UKKQueue 中委托消息。当目录下的任何文件被修改时,我的应用程序会收到通知。但问题是它没有给出被修改的特定文件的名称或路径。它给出了目录的路径,但没有给出特定文件的路径。

知道如何在特定文件中查看文件夹以进行修改吗?

0 投票
1 回答
248 浏览

select - 是否有等效于 select() 的“errorfds”集的 kqueue()/kevent()?

我今天将一些代码从 select() 移植到 kqueue(),我注意到 kevent() 似乎没有 select() 的“异常集”功能的模拟。

也就是说,select() 的函数签名是:

...并且使用 kevent(),EVFILT_READ 对应于 (readfds),EVFILT_WRITE 对应于 (writefds),但我没有看到任何类似 EVFILT_ERROR 的对应于 (errorfds)。

在 kevent() 下是否真的不支持套接字错误条件,或者它是否存在但以某种对我来说并不明显的方式实现?

0 投票
1 回答
4368 浏览

python - 看门狗(osx)未通知远程网络更改

我正在使用看门狗来监视网络目录,非递归的,以便随着时间的推移创建特定的文件模式。我看到的问题是,虽然我在本地测试时效果很好,但如果我从远程机器更改受监控的目录,则不会触发事件。

以下是我的配置的具体细节:

  • 操作系统
  • 在 NFS 挂载上监视单个目录,非递归
  • 蟒蛇2.6

使用股票示例片段可以轻松复制我的问题示例:

如果您在网络目录上启动它,然后从同一系统进行更改,则会调度事件。但是,如果您随后从网络上的另一台计算机更改目录,则不会调度任何事件。

我是否遗漏了有关 kqueue 限制的某些内容(或者可能是 OSX 上的 FSEvents,因为它说它首先是 Watchdog 的首选)?

我对这个 python 包很感兴趣,并打算开始将它用于其他脚本来替换文件系统轮询,但我似乎找不到任何关于我为什么看到这个问题的信息。

更新

我还测试了MacFSEvents并遇到了同样的问题。然后我修改了上面的测试脚本,强制尝试不同的观察者:

所以至少现在,我可以使用投票观察者,而不必修改我的代码,直到有人可以阐明我遇到的真正问题。

0 投票
2 回答
432 浏览

io - kqueue() 和 O_NONBLOCK

如果你使用 kqueue(),你应该在你的文件描述符上设置 O_NONBLOCK 吗?换句话说,无论是否设置了 O_NONBLOCK,kqueue() 是否保证对就绪文件描述符的下一个 I/O 操作不会阻塞?

0 投票
1 回答
535 浏览

objective-c - 当我修改我的文件时发送 kevent NOTE_DELETE

我尝试在文件上使用 kqeue 和 kevent,当我的文件被修改时,我将更新我的软件。当我的文件被删除时,我会删除我软件中的链接。

所以我初始化 kqueue

然后当我调用 kevent 并修改我的文件时

我得到了 NOTE_ATTRIB 事件,然后是 NOTE_DELETE ...为什么?

0 投票
2 回答
4560 浏览

cocoa - 监视文件更改的目录

我想监视一个目录(包含数千个文件,大约有 5 级子目录)以了解文件何时更改。我知道我可以使用 FSEvents API 来监视该目录中文件何时更改的目录,但我似乎无法弄清楚如何确定哪些文件已更改。参考建议我构建一棵二叉树并在每次触发事件时遍历树,这是确定哪些文件已更改的最佳方法吗?如果没有,有什么更好的选择?

递归扫描目录并将kqueue附加到每个文件会更好吗?我不确定它对数千个文件的效果如何?

0 投票
2 回答
2724 浏览

c - Kqueue 同时返回 EVFILT_READ 和 EVFILT_WRITE 但我安装了单独的 (ident,filt) 对

我遇到了一个问题,我不确定是否是 kqueue 的预期行为,或者我做错了什么。

我需要使用 kqueue 为单个套接字文件描述符安装单独的事件。单独的事件是 (sockfd,EVFILT_READ) 和 (sockfd,EVFILT_WRITE) 的一个。但是,当我稍后从 kqueue 中提取事件时,我从 kqueue 中获得了两个事件,但这两个事件都包含(event.filter & EVFILT_READ)和(event.filter & EVFILT_WRITE)。

我需要将它们分开,否则我不知道哪个事件实际上已准备好,读取或写入?

这是我放在一起来说明问题的一些示例代码。请记住,这只是测试代码,以弄清楚为什么我在每个事件中都获得了两个过滤器标志。

我一直无法弄清楚这一点。为什么当我安装单独的事件时,每个 kqueue 事件都包含 EVFILT_READ 和 EVFILT_WRITE?

这给我带来的真正问题是,因为这些事件总是报告 EVFILT_READ,它具有代码的副作用,总是认为有可用的读取,但实际上没有,所以对 read() 的调用将不成功并且有其他后果。请注意,此代码没有显示这些后果,这只是我编写的问题的一个示例,因此我弄清楚了这一点并继续使用我的真实代码。

有任何想法吗?

PS 这是 printf 的输出:

0 投票
2 回答
18420 浏览

macos - OS X 不支持 epoll 功能吗?

我正在学习使用 epoll 功能。但是我的 OS X,Mountain Lion 没有头文件 sys/epoll.h。

我想在 OS X 上使用 epoll 功能。如何使用 epoll 功能?

0 投票
1 回答
338 浏览

objective-c - Cocoa 的 KQueue 包装器

所以我想监控一个文件,据我所知,KQueue 是在 Cocoa 中实现它的方法。我有一个部分运行的 FSEvents 代码正在运行,但它监视整个文件夹。

谁能推荐一个好的 Cocoa 包装器,我可以用它来监控文件何时被更改?最好是按照它接收文件路径的方式,然后在检测到更改时运行一段代码。

任何建议,将不胜感激。

我也很惊讶可可没有内置这样的东西??

0 投票
2 回答
786 浏览

c - 常规文件上的 Kqueue

kqueue(在 OS X 上)对读/写常规文件有用吗?我知道 epoll对 Linux 上的常规文件没有用,所以我想知道 kqueue 是否也是如此。

编辑:我不是说读/写文件,显然 read() 和 write() 是为了那个。我的意思是,“kqueue 对于检测文件何时可读/可写真的有用吗?”