问题标签 [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.
linux - 有什么方法可以用 kqueue/kevent 模拟 epoll_wait 吗?
我有一堆文件描述符的列表,我已经为其创建了 kevents,我试图弄清楚是否有任何方法可以获得准备好进行读取或写入访问的文件描述符的数量。
有什么方法可以获取“就绪”文件描述符列表,就像 epoll_wait 提供的那样?
haskell - 基于 kqueue 的 Haskell 并发
我编写了并发应用程序并发现了错误:
buildFdSets:文件描述符超出范围
我发现这是操作系统对一个进程中文件描述符数量的限制,在我的FreeBSD中是1024
. 是的极限select()
。我还了解到还有另一种方法:kqueue()
.
我的问题是:
- 如何赢得文件描述符的限制?
- 如何在haskell程序中使用
kqueue()
而不是使用?select()
c - 为事件驱动的应用程序选择 IPC 解决方案
我目前正在研究一个相当大的单线程、基于事件的应用程序,该应用程序围绕 Linux 下的 epoll 和其他平台下的类似技术设计。目前,每当我们希望两个实例进行通信时,它们通常通过套接字进行,无论它们是否在同一台机器上运行。出于性能原因,我设想使用某种形式的 IPC 来加速同一台机器的通信。现在,我需要决定使用哪种 IPC 机制。
以下因素对我很重要:
- 事件驱动,没有完全重新设计——如果 IPC 机制不能很好地适应 epoll,那几个月的工作对我来说就白费了
- 快——如果这个机制不比套接字快,那么不值得花时间去实现它
- 在执行过程中灵活且(重新)可配置——我相信这排除了 MPI & al
- 不需要多线程。
我愿意为不同的平台使用不同的机制,只要它们都使用相同的范例。我也愿意尽可能深入地了解 C/C++/Obj-C 以实现特定于平台的绑定。
有什么建议吗?
谢谢。
iphone - 在 iOS 上,应用程序如何确定文件是否不再被另一个进程写入?
我的问题与这个问题非常相似:使用 kqueue() 监视目录更改的最佳方法是什么?但我对那里的答案不满意。
我有一个 kqueue 设置,当文件复制到我的应用程序的 Documents 目录时会收到通知。当然,一旦复制开始,通知就会触发,但我想知道它什么时候完成。肯定有比轮询修改时间更好的方法吗?
python - 在 OSX 上使用 python select kqueue 监控外部应用程序创建的文件
通常,将我 1 小时长的录音会话转码为 mp3 文件需要二十多分钟。
当 OSX 应用程序garageband 完成编写该 mp3 文件时,我想使用 python 脚本执行一系列 python 代码。
python中检测外部应用程序是否已完成将数据写入文件并关闭该文件的最佳方法是什么。我阅读了有关 kqueue 和 epoll 的信息,但是由于我没有 os 事件检测方面的背景并且找不到一个很好的示例,所以我在这里要求一个。
我现在使用的代码执行以下操作,我正在寻找更优雅的东西。
ios - iphone上的kqueue?
我正在将 linux 服务器移植到 ios。它是一个单线程、事件驱动的设计,在 OSX 上使用 kqueue 来处理套接字和其他事件。ios上有类似的吗?
谢谢!
python - 在 Python 中即时读取更新的文件
我正在编写两个都解析文件的 Python 脚本。一个是标准的 unix 日志文件,另一个是二进制文件。我正在尝试找出监控这些数据的最佳方法,以便在数据更新后立即读取数据。到目前为止,我发现的大多数解决方案都是特定于 linux 的,但我需要它才能在 FreeBSD 中工作。
显然,一种方法是每隔 X 时间运行一次我的脚本,但这似乎很粗暴且效率低下。如果我希望我的 Python 应用程序在后台持续运行并监视文件并在文件更改/更新后对其进行操作,那么我最好的选择是什么?
c - How do I replace select() with kevent() for higher performance?
From the Kqueue Wikipedia Page:
Kqueue provides efficient input and output event pipelines between the kernel and userland. Thus, it is possible to modify event filters as well as receive pending events while using only a single system call to kevent(2) per main event loop iteration. This contrasts with older traditional polling system calls such as poll(2) and select(2) which are less efficient, especially when polling for events on a large number of file descriptors
That sounds great. I target FreeBSD for my server, and I'm handling a significant amount of network socket fd's - using a select() on them all and figuring out who to read data from. I'd rather use kevent() calls to get higher performance, since that's what it's there for!
I've read the man page for kevent on FreeBSD here but it's cryptic to me and I'm not finding good resources that explain it. An example of using kevent to replace select would solve my problem, and would also help me get a better idea of how kevent() is used.
objective-c - 是否有一个用于文件系统事件/kqueue 的好的 objc 库包装器来为我处理递归监视?
我想编写一个 OSX (Snow Leopard) 应用程序,当特定目录中的文件发生更改时接收通知,并且我想访问已更改的特定文件的路径。
我知道我可以使用File System Events
或来做到这一点kqueue
。前者没有提供更改特定文件的详细信息(要求我构建我正在观看的目录的快照,然后扫描它以找出更改的文件)。后者不支持递归监视(要求我递归地将监视添加到父目录中的每个文件和目录)。
我已经查找了为我处理快照/递归乐趣的库,但找不到任何库。UKKQueue
看起来像是低级kqueue
东西的一个很好的包装器,但似乎不做递归。对GTMFileSystemKQueue
. SCEvents
看起来像是一个很好的包装器,File System Events
但似乎无法处理找出更改的特定文件。
是否有一个库可以满足我的要求并且适合这些技术中的任何一种的 objc 项目?
networking - kqueue的限制是什么?
libev ( source ) 的文档说:
Kqueue 值得特别一提,在撰写本文时,它在除 NetBSD 之外的所有 BSD 上都被破坏(通常它不能可靠地与套接字和管道一起工作,除了在 Darwin 上,它当然完全没用)。
它还提到:
kqueue 系统调用在所有已知版本中都被破坏 - 大多数版本仅支持套接字,许多支持管道。
那么,kqueue 有哪些限制呢?这些限制记录在哪里?最初的研究发现了对旧操作系统(Mac OS X 10.3)上内核恐慌的引用以及对不正确/不完整文档的抱怨。我不知道这些消息来源有多可靠。
特别是,如果 kqueue 确实可以可靠地使用套接字(AF_UNIX、AF_INET 和 AF_INET6),那么我不介意。我对有关 Mac OS X 和 FreeBSD 实现的信息特别感兴趣。