【发布时间】:2011-06-18 21:59:39
【问题描述】:
我正试图围绕 Linux 中的 epoll 展开思考。
正常的操作好像是:
// Create the epoll_fd
int epoll_fd = epoll_create(10);
...
// Add file descriptors to it
struct epoll_event ev = {0};
ev.events |= EPOLLIN;
ev.data.ptr = ...;
/* for brevity, I don't do error checking here */
epoll_ctl(epoll_fd, EPOLL_CTL_ADD, some_fd, &ev);
...
// Wait for IO events
struct epoll_event events[10];
int num_events = epoll_wait(epoll_fd, events, 10, -1);
// Now handle the events
...
我的问题是:鉴于epoll_fd 似乎是一个常规文件描述符,除了三个 epoll 函数调用之外,我还能用它执行其他文件操作吗?
【问题讨论】:
-
在使用
epoll之前,您应该真正问问自己为什么要使用它。它是完全非标准且不可移植的,并且在人们使用它的绝大多数地方都没有任何可衡量的好处。除非您将打开文件的限制从 1024 增加到 50000 或更多,否则您所做的一切都会使您的代码无缘无故地不可移植。
标签: c linux file-io linux-kernel epoll