问题标签 [epoll]

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.

0 投票
2 回答
32808 浏览

c++ - 你能推荐一些关于 Linux 上 Epoll 的指南吗?

我需要了解 Linux 系统上的 Epoll。

您能否推荐有关 epoll 库的手册或指南?

需要更详细的指南。最好有一些例子。

帮我。并感谢您的阅读。

0 投票
4 回答
32676 浏览

windows - Windows 上最好的 epoll/kqueue/select 等效项是什么?

什么是 Windows 最好的 I/O 事件通知工具?

最好的意思是……

  1. 对输入文件描述符的数量没有限制
  2. 适用于所有文件描述符(磁盘文件,套接字,...)
  3. 提供多种通知方式(边沿触发、限位触发)
0 投票
2 回答
5595 浏览

select - Boost Message Queue 不是基于 POSIX 消息队列?无法选择(2)?

我想我会使用 Boost.Interprocess 的消息队列代替套接字在一个主机内进行通信。但是在深入研究之后,似乎这个库出于某种原因避开了 POSIX 消息队列工具(我的 Linux 系统支持),而是在 POSIX 共享内存之上实现。界面非常相似,您可能不会马上猜到,但似乎确实如此。

对我来说不利的是,shm_open(3)select(2)通过mq_open(3).

在这种情况下,Boost 的库似乎丢失了。有谁知道为什么会这样?即使 POSIX 消息队列仅在某些系统上可用,我希望 Boost 在可用的地方使用该工具,并仅在必要时重新实现它。POSIX 系统是否存在一些我还不认识的缺陷?

0 投票
3 回答
15125 浏览

c - 如果超时为 0,poll() 会做什么?

我正在查看poll() 手册页,它告诉我poll()为 timeout 参数传入正值和负值时的行为。它并没有告诉我如果 timeout 是 会发生什么0有任何想法吗?

查看epoll_wait() 手册页,它告诉我超时值为 时0,即使没有可用的事件,它也会立即返回。假设它poll() 的行为方式相同是否安全?

0 投票
10 回答
10674 浏览

python - epoll如何在Python中检测客户端关闭?

这是我的服务器

客户端输入

服务器端输出

奇怪的是,客户端关闭连接后,epoll仍然可以轮询recv并发送事件!为什么 EPOLLERR 事件永远不会发生?如果你使用 EPOLLHUP 也是一样的。

我注意到 EPOLLERR 事件仅在您尝试编写关闭的连接时发生。除此之外,还有其他方法可以判断连接是否已关闭?

如果在 EPOLLIN 事件中一无所获,将连接视为关闭是否正确?

0 投票
1 回答
1460 浏览

linux - 当另一端写入和关闭时,在 epoll 控制的非阻塞套接字上丢失字节

我有一个当前订阅的非阻塞套接字:

它接收几个 EPOLLIN,我非阻塞地读取它们直到 EAGAIN,然后我收到 HUP 和 RDHUP,有时还要读取几个字节。

另一面只是:

我已经在 epollin 和关闭时间的事件循环中直接尝试使用 msg_peek 进行 recv,并添加接收到的数据它并不总是收到 960,有时只有大约 480 个字节。

使套接字非阻塞或在发送和关闭之间的客户端中放置一个 sleep(1) 可以正常工作。

在我看来,与 epoll 相关的非阻塞套接字问题更多。像“nc -l -p port”这样简单的东西接收适当数量的字节。

0 投票
1 回答
432 浏览

linux - 检测连接是否建立

我最近开始在 Linux 下学习网络编程,似乎我无法找到正确的方法来检测是否已建立与远程主机的连接。ATM 所有未建立的连接都注册在一个 epoll 实例中。一旦 EPOLLOUT 标志设置为 1 的事件到达,连接就被标记为已建立。就这么简单,但我做对了......

有没有更好的方法来做到这一点?如果不是,那么等待套接字变为可写是保证连接已建立的好方法吗?

0 投票
4 回答
5605 浏览

linux - 如何在单个事件循环中同时使用 AIO 和 epoll?

如何将 AIO 和 epoll 组合在一个事件循环中?

谷歌在 2002 年和 2003 年发现了很多关于统一它们的讨论,但不清楚是否发生了什么事,或者是否有可能。

有没有人使用 eventfd 作为 aio 信号的 epoll 循环?

0 投票
2 回答
3843 浏览

linux - 接受/epoll 问题

我有这个使用 epoll 的代码,它有问题。当我运行它时,它会给出输出: Server-socket() is OK... Server-bind() is OK... 3 4 accept: Invalid argument

我在 ubuntu linux 上运行它,系统更新,作为受限用户和 root 接受的输入有什么问题?我应该改变什么?

0 投票
1 回答
2354 浏览

linux - 可以发送功能块吗

我正在编写一个聊天程序,对于服务器,当我发送数据时,send() 函数是否需要很长时间才能发送数据?

这是我的问题:我正在使用带有 epoll 的 linux 2.6,单线程中的服务器 如果 send() 阻塞,那么这意味着服务器上的所有其他活动都将停止。就像如果有一个非常慢的客户端很长时间没有向 tcp 数据包发送 ACK 响应,那么发送函数会立即继续执行,还是会等待客户端很长时间。我不希望一个/几个慢客户端导致聊天服务器延迟。

我想要的是 send() 非阻塞并很快返回。如果它没有发送所有数据,它将简单地返回发送的数量,我将从缓冲区中删除它并在下次服务时继续发送,直到发送所有数据。基本上我不想在缓慢或无响应的客户端上长时间阻塞发送。