gpt4 book ai didi

linux - 在用户空间模拟文件描述符

转载 作者:太空狗 更新时间:2023-10-29 12:08:28 24 4
gpt4 key购买 nike

我想在用户空间实现一个类似套接字的对象。有一个重要的要求是它应该是可轮询的(即它的状态应该可以通过 select 或 poll 调用查询)。

是否有实现此类对象的平台中立方式?

我知道在 Linux 上有一种 eventfd 可以满足需要,只是没有办法强制它既不发出 POLLIN 也不发出 POLLOUT 信号。

最佳答案

您可以使用 socketpair() 创建一对连接的 AF_UNIX 套接字。这比 pipe() 更好,因为它允许双向通信。如果这不足以满足您的需求,另一种选择(守护进程需要 root)是使用 as-yet-not-in-mainline-Linux CUSE补丁在用户空间创建一个设备驱动程序来做任何你喜欢的事情。或者您可以 Hook 您的用户将使用的任何事件循环...

新的 linux eventfd 也可以模拟 POLLIN/POLLOUT,尽管不能同时模拟两者 - 将其值设置为 0xffffffffffffffffe 用于 POLLIN 而不是 POLLOUT,0 用于 POLLOUT 但不是 POLLIN,或者两者的任何其他值。

除了这些选项之外,没有平台中立的方式来做到这一点,不。通常的模式是使用 FIFO 来唤醒事件循环,并在事件循环唤醒后使用其他 API 进行轮询。

关于linux - 在用户空间模拟文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/909189/

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