kqueue

    0热度

    1回答

    我想通过一个信号通知工作线程 - 它应该停止等待事件并检查一些全局条件。我在Linux上使用epoll_pwait,我想在Mac OS上也这样做。 但kqueue(2)手册说: EVFILT_SIGNAL ......只有信号发送到该进程,而不是一个特定的线程,将触发过滤器。 如何克服这个限制?或者可能有另一个好方法来通知kevent等待的唯一线程?

    2热度

    1回答

    我编写了一个函数来观察一个文件(给出一个fd)增长到一定的大小,包括超时。我使用kqueue()/kevent()等待文件被“扩展”,但在得到文件增长的通知后,我必须检查文件大小(并将其与所需大小进行比较)。这似乎很容易,但我无法找到一种在POSIX中可靠地执行此操作的方法。 注意:如果文件在指定的时间内根本不增长,超时将会命中。所以,这不是一个绝对超时,只是文件发生一些增长的超时。我在OS X上

    4热度

    2回答

    我目前使用kqueue来处理服务器进程中的每个线程的多个客户端 所以我不希望线程在信号SIGPIPE出现时被终止,我只想删除来自kqueue的相应socked ID。 所以我的问题是:有没有办法获得一个Signalhandle中相应的socketid,并将其解析回进程以将其从事件kqueue中删除,或者我是否有SIG_IGN SIGPIPE ,并通过返回 - 1发送?并且会在超时时间后返回-1值还

    0热度

    1回答

    我需要观察一个包含多个子目录的目录,每个子目录都有我需要监视的文件添加,修改和删除的文件。 我找到了一些示例代码,并且为了使它工作而不得不稍微修改它,但它并不完全符合我的需要。它可以找到文件重命名,或在目录(但不是子目录)中删除,但不响应文件修改。 我可以使用Google搜索找到的方法是单独监视每个文件;但是,我有几十万个文件要监视,并且每个文件描述符都可能不明智。 在FreeBSD下有办法做我需

    1热度

    1回答

    下面是两个小脚本,显示我现在如何使用kevents,并重现我的问题。 kqtest.py: import socket import select import threading server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_sock.setsockopt(socket.SOL_SOCKET

    0热度

    4回答

    我知道,如果远程主机正常关闭连接,epoll将报告EPOLLIN,并呼吁read或recv不会阻止,并会返回0字节(即结束流)。 然而,如果连接没有正常关闭,和一个或writesend操作失败,这是否导致epoll随后返回EPOLLIN该插座,产生流场景的相同/相似端? 我试图找到关于这种行为的文档,但都没有成功,而我可以测试它,我不感兴趣,在与特定的内核版本特定的分布会发生什么。

    1热度

    2回答

    我想使用的kqueue在C做一个面向事件的服务器当我编译我的代码,它给我这个错误 致命错误:SYS/event.h:没有这样的根据该我下创建文件必须包括我是新来的事件在C语言进行编程

    3热度

    1回答

    我最近在读Redis。 Redis基于I/O多路复用实现了一个简单的事件驱动库。 Redis的说,它会选择系统所支持的最佳复用,并给出了下面的代码: /* Include the best multiplexing layer supported by this system. * The following should be ordered by performances, descendi

    5热度

    1回答

    的kqueue mechanism有一个事件标志,EV_RECEIPT,它根据链接的手册页: ...是使批量更改到kqueue的 不会消耗任何未决的事件非常有用。当作为输入通过时, 强制EV_ERROR始终返回。当一个过滤器是 成功添加的数据字段将为零。然而 我的理解是,它是微不足道的建立到kqueue的大量修改而不消耗任何未决事件,简单地通过使0为nevents参数kevent,因此绘图没有从队

    1热度

    1回答

    我决定尝试使用Crystal来检查其相对于Ruby的速度和兼容性。我将预先构建的.pkg安装程序下载到我的macOS Sierra系统。我的小测试程序似乎运行,但都产生了以下消息: $ crystal --version [warn] kq_init: detected broken kqueue; not using.: Undefined error: 0 Crystal 0.19.4 [