7得票3回答
当文件描述符关闭时,我是否会从 epoll 收到通知?

我目前正在构建一个使用 epoll 的项目。它的表现不错,但当底层 fd 关闭时,从 epoll 中移除文件描述符时,获得通知会很好。 有没有办法在 fd 关闭时立即从 epoll 中获得通知?

8得票1回答
epoll是否保留文件描述符注册的顺序?

我正在研究Linux系统调用,发现了一些epoll方面的问题让我感到困惑。比如,我创建了一个epoll实例: epollfd = epoll_create(50); 下一步,我在for循环中注册了50个文件描述符: for(i=0; i<50; i++){ // open...

26得票3回答
Linux,套接字,非阻塞连接

我想创建一个非阻塞的连接。 socket.connect(); // returns immediately 为此,我使用另一个线程、一个无限循环和Linux epoll。示例伪代码如下: // in another thread { create_non_block_socket...

7得票1回答
边缘触发 epoll c

在触发边缘的 epoll 事件中,我会读取一个套接字(也可能是多个套接字),直到没有更多数据可读(EAGAIN 或 EWOULDBLOCK),然后循环回到 epoll_wait。如果在处理该读取时,另一个套接字(当前未被读取的套接字)变为可读状态,那么会发生什么?触发边缘的 epoll 会忽略...

7得票1回答
如何使用 epoll 的 data->ptr,而不是 data.fd?

我正在使用 epoll 和大量的 fd 编写应用程序。为了改善 fd 到应用相关数据库的搜索,我想传递给 epoll 应用程序信息,例如在 DB 数组中的索引。我考虑使用 data->ptr(epoll_data_t -> *ptr),据我所知,我可以给一个指针,它保存有来自应用程序层的 fd...

9得票1回答
当不在epoll_waiting时,是否仍然监视epoll事件?

我对基于事件的编程还不是很熟悉。我正在尝试使用epoll的边缘触发模式,它似乎只会通知已准备好进行读/写操作的文件(与水平触发模式相反,后者会通知所有已准备好的文件,无论它们是否已经准备好或者刚刚准备好)。 对我来说不清楚的是:在边缘触发模式下,当我没有执行epoll_wait时,是否会通知...

29得票1回答
在关闭套接字之前,有必要从epoll中注销吗?

假设有以下代码,其中“sock”是之前已经在由epfd指定的epoll文件描述符中注册过的TCP套接字句柄。epoll_ctl(epfd, EPOLL_CTL_DEL, sock, &ev); close(sock); 如果套接字随后会被关闭,是否仍然需要调用 epoll_ctl?或者...

16得票2回答
在*nix系统中了解异步编程的基础知识

最近我一直在Google搜索以了解在Nix机器上实现异步编程/行为的各种方法(如之前所知),并确认了一个事实:Linux仍然没有像Windows(IOCP)那样的真正的异步模式(使用单个线程的并发)。 以下是Linux的几个替代方案: select/poll/epoll :: 无法使用单...

7得票2回答
Linux Evdev轮询延迟

我正在使用一台连接了两个键盘的笔记本电脑(一个内置和一个USB)。我使用 libudev 获取这些已连接的键盘,并使用 epoll 通过 evdev 接口轮询它们的输入: // Compile with $(gcc udev.c -ludev) #include <stdbool.h...

17得票1回答
epoll_wait是否总是设置EPOLLOUT位?

在一个监听的socket上,我设置了EPOLLIN位,但在客户端连接时,我将EPOLLIN | EPOLLOUT位设置为struct epoll_event,如下所示: struct epoll_event ev; ev.data.fd = fd; ev.events = EPOLLIN ...