当前位置: 技术问答>linux和unix
关于epoll(7)的问题
来源: 互联网 发布时间:2017-05-28
本文导语: 以下代码来自于man 7 epoll,我的问题是他在处理accept进来的fd,把fd添加到epoll时,用到了一个全局的epoll_event ev,然后传ev的地址进epoll_ctl,这样后续的添加fd会影响之前的fd的event设置吗? #define MAX_EVENTS 10 struct epo...
以下代码来自于man 7 epoll,我的问题是他在处理accept进来的fd,把fd添加到epoll时,用到了一个全局的epoll_event ev,然后传ev的地址进epoll_ctl,这样后续的添加fd会影响之前的fd的event设置吗?
#define MAX_EVENTS 10
struct epoll_event ev, events[MAX_EVENTS];
int listen_sock, conn_sock, nfds, epollfd;
/* Set up listening socket, 'listen_sock' (socket(),
bind(), listen()) */
epollfd = epoll_create(10);
if (epollfd == -1) {
perror("epoll_create");
exit(EXIT_FAILURE);
}
ev.events = EPOLLIN;
ev.data.fd = listen_sock;
if (epoll_ctl(epollfd, EPOLL_CTL_ADD, listen_sock, &ev) == -1) {
perror("epoll_ctl: listen_sock");
exit(EXIT_FAILURE);
}
for (;;) {
nfds = epoll_wait(epollfd, events, MAX_EVENTS, -1);
if (nfds == -1) {
perror("epoll_pwait");
exit(EXIT_FAILURE);
}
for (n = 0; n