gpt4 book ai didi

c - 关于epoll_wait的返回机制

转载 作者:太空宇宙 更新时间:2023-11-04 03:43:08 24 4
gpt4 key购买 nike

我见过所有使用 epoll_wait 的 epoll exmaples

int i, n;
...
n = epoll_wait(epfd, events, MAX_EVENTS, -1);
for (i = 0; i < n; ++i) {
do_something_with(events[i]);
}

我改成

int i;
...
for (i = 0; i < epoll_wait(epfd, events, MAX_EVENTS, -1); ++i) {
do_something_with(events[i]);
}

当套接字连接到这个程序并发送一些东西时,epoll_wait 将只返回一次,带有连接 Action ,但之后无法读取(以前的版本,两次,连接并读取)。它有什么魔力?

完整的 C 代码位于 http://pastebin.com/bx4hbhdM

Python客户端是

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 4999))
s.sendall('hello')
s.close()

最佳答案

更改后的版本会在每次循环迭代时调用 epoll_wait,因此您在仅处理一个事件后再次阻塞。您必须预先调用 epoll_wait 一次,然后执行循环。

关于c - 关于epoll_wait的返回机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26922141/

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