与epoll的kqueue的unregister函数类似的函数是什么?

2024-05-29 05:07:28 发布

您现在位置:Python中文网/ 问答频道 /正文

Python Epoll的函数名为epoll.注销从epoll对象中删除已注册的文件描述符。有人知道Kqueue中的函数是什么吗。对于kqueue,我只能找到如何删除事件。在


Tags: 文件对象函数事件描述符kqueueepoll
1条回答
网友
1楼 · 发布于 2024-05-29 05:07:28

使用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')

{a1}你也可以看看这个队列。(和select()一样,文件描述符也可以是具有fileno()方法的任何Python对象。)

相关问题 更多 >

    热门问题