gpt4 book ai didi

python - 与 epoll 的 kqueue 注销函数类似的函数是什么?

转载 作者:行者123 更新时间:2023-12-01 05:37:34 25 4
gpt4 key购买 nike

Python Epoll 有一个名为 epoll.unregister 的函数,它从 epoll 对象中删除已注册的文件描述符。有谁知道Kqueue中与此类似的功能是什么。对于 kqueue 我只能找到如何删除事件。

最佳答案

您使用kqueue.control来注册或取消注册事件。

一个例子:

import select
import os

os.mkfifo('my.fifo')
f = os.open('my.fifo', os.O_RDONLY|os.O_NONBLOCK)

try:
kq = select.kqueue()

# Add FD to the queue
kq.control([select.kevent(f, select.KQ_FILTER_READ, select.KQ_EV_ADD|select.KQ_EV_ENABLE)], 0)

# Should break as soon as we received something.
i = 0
while True:
events = kq.control(None, 1, 1.0) # max_events, timeout
print(i, events)
i += 1
if len(events) >= 1:
print('We got:', os.read(f, events[0].data))
break

# Remove FD from the queue.
kq.control([select.kevent(f, select.KQ_FILTER_READ, select.KQ_EV_DELETE)], 0)

# Should never receive anything now even if we write to the pipe.
i = 0
while True:
events = kq.control(None, 1, 1.0) # max_events, timeout
print(i, events)
i += 1
if len(events) >= 1:
print('We got:', os.read(f, events[0].data))
break

finally:
os.close(f)
os.remove('my.fifo')

您还可以查看 test case kqueue 看看它是如何使用的。 (与 select() 一样,文件描述符也可以是任何具有 fileno() 方法的 Python 对象。)

关于python - 与 epoll 的 kqueue 注销函数类似的函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18576680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com