问题标签 [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 投票
3 回答
1553 浏览

macos - 我如何知道 CUPS 打印作业何时完成以及有关该作业的信息?

每次创建/完成 Mac 打印作业时,我都需要知道,以及有关该作业的一些信息(打印的内容、页面、副本等)。

到目前为止,我想出的最好方法是在 /var/spool/cups/ 上使用 kqueue() ,然后在创建 c##### 文件时对其进行解析,但我想知道是否有更好的方法方式。

0 投票
1 回答
439 浏览

sockets - 使用 kqueue 轮询异常情况

我正在修改一个应用程序,以便用 kqueue 替换它对 select() 的使用。select() 允许轮询异常情况:

阅读 kqueue 文档后,似乎没有办法做到这一点。有EVFILT_READEVFILT_WRITE没有类似EVFILT_ERROR/的内容EVFILT_EXCEPTIONAL。是否可以轮询异常情况,如果可以,如何进行?

0 投票
4 回答
18356 浏览

macos - Mac OS X 中的文件级文件系统更改通知

我希望在(直接或间接)给定目录下的任何文件被修改时通知我的代码。通过“修改”,我的意思是我希望在文件内容被更改、重命名或删除时通知我的代码;或者如果添加了新文件。对于我的应用程序,可能有数千个文件。

我看起来像 FSEvents,但它的技术概述部分说:

重要的一点是通知的粒度是在目录级别。它只告诉您目录中的某些内容发生了变化,但不告诉您发生了什么变化。

它还说:

文件系统事件 API 也不是为找出特定文件何时更改而设计的。对于这样的目的,kqueues 机制更为合适。

但是,为了在给定文件上使用 kqueue,必须打开文件以获取文件描述符。管理数千个文件描述符是不切实际的(而且可能会超过允许的最大打开文件描述符数)。

奇怪的是,在 Windows 下,我可以使用该ReadDirectoryChangesW()功能,它正是我想要的。

那么如何在 Mac OS X 下做我想做的事呢?或者,换一种方式问:如何ReadDirectoryChangesW()在用户空间中为 Mac OS X 编写等价物(并且这样做非常有效)?

0 投票
1 回答
2734 浏览

posix - 重温“如何同时使用 aio 和 epoll”

关注如何在单个事件循环中同时使用 AIO 和 epoll?.

linux 中实际上有 2 个“aio”API。有 POSIX aio(aio_* 系列函数),包含在我相信由 RedHat(?)开发的 glibc 和 libaio 中,即 io_* 系列。

第一个允许通过 aio_sigevent aiocb 成员注册通知请求。这可以很容易地与 ppoll()/pselect() 事件循环集成。如果您想将 POSIX aio 与 epoll() 集成,那么您需要将信号转换为虚拟 fd(可能是管道)上的事件并使用 epoll 监听它,同时以经典方式或使用 ppoll/ 捕获信号选择。首选(普通 sighandlers)有多安全,取决于应用。也许在 epoll 上,但我并不完全了解它的内部结构。我可以安全地假设,如果我有一个基于 epoll 的应用程序并且我想添加 POSIX aio 支持,那么我就完蛋了?这是我的问题。

第二个 AIO 实现 libaio - 确实可以与 eventfd() 一起使用(结构 iocb 具有预期为零的 aio_resfd 成员或将 AIO 结果传递到的 eventfd)。但这不是书本上的。POSIX 指定的,即。

我梦想自己成为一个*BSD 用户,一切都很清楚。您拥有对 AIO 事件的 POSIX AIO 和 kqueue() 支持。晶莹剔透。像许多其他事情一样。

0 投票
4 回答
7832 浏览

select - 使用 select、epoll 或 kqueue 提供大文件

Nginx 使用 epoll 或其他多路复用技术(选择)来处理多个客户端,即它不像 apache 那样为每个请求生成一个新线程。

我尝试使用 select 在我自己的测试程序中复制相同的内容。我可以通过创建非阻塞套接字并使用 select 来决定要服务的客户端来接受来自多个客户端的连接。我的程序只会将他们的数据回显给他们。它适用于小数据传输(每个客户端一些字节)

当我需要通过与客户端的连接发送大文件时,就会出现问题。由于我只有一个线程为所有客户端提供服务,直到我完成读取文件并将其写入套接字时,我无法继续为其他客户端提供服务。

这个问题是否有已知的解决方案,或者最好为每个这样的请求创建一个线程?

0 投票
2 回答
3424 浏览

iphone - 使用 kqueue() 监视目录更改的最佳方法是什么?

好的:我正在 iPhone OS 应用程序中实现文件共享,当然这意味着文件系统监控。耶!

基本上,当用户在 iTunes 中将文件操作到我的应用程序部分时,操作系统会从我可以访问的目录复制和/或删除。因此,我可能需要通过像kqueue().

如何实现这一点,以便我知道文件已完成复制?我的思路是:

  • 用 监控kqueue()
  • 在事件中,开始(或重置现有)超时。
  • 超时后,做工作。

但是有没有更好的方法来确保我不会踩到操作系统的脚趾?

0 投票
1 回答
389 浏览

objective-c - kqueue NOTE_EXIT 不起作用

我正在尝试使用Apple 的使用 kqueue 的示例,但除非我在进程开始开始观察 kqueue,否则永远不会调用回调。但是该过程的生命周期很短,如果该过程在我开始观察之前或之后开始,我需要代码才能工作。

0 投票
3 回答
1773 浏览

macos - 强制触发 kevent

我在 OS X 中使用 kqueue 进行套接字同步。我可以注册一个感兴趣的事件,如下所示:

问题是,有没有办法强制触发此事件,以便等待的 kevent 调用返回?

0 投票
1 回答
722 浏览

networking - 使用kqueue判断socket另一端挂断或者socket异常状态

我已阅读man 2 kqueue但尚未发现如何在不使用 or 注册的情况下获得有关套接字挂断或套接字异常情况的EVFILT_READ通知EVFILT_WRITE。除此之外,不完全清楚 kqueue 如何完全发出套接字异常状态的信号。

提前感谢您的回答。

0 投票
2 回答
2295 浏览

python - Are there any major performance differences between epoll and kqueue?

My development machine is a MacBook (which of course has kqueue). However, in production we're running Linux (which of course uses epoll). Obviously, to know the performance characteristics of my code I need to run it using epoll. That said, is performance that I see under kqueue a decent approximation of what I'll see with epoll? Or are there any situations where performance may be significantly different? For the most part, it seems that kqueue and epoll are pretty much similar in terms of performance, but I haven't really done very thorough testing.

If it makes a difference, I'm using tornado in Python.