epoll出现Bad file descriptor的原因

错误的顺序:

  close();

  epoll_ctl(epollfd, EPOLL_CTL_DEL, sockfd, &ev);

正确的顺序:

  epoll_ctl(epollfd, EPOLL_CTL_DEL, sockfd, &ev);

  close();

在删除事件epoll_ctl(epollfd, EPOLL_CTL_DEL, sockfd, &ev);之前调用close()关闭socket描述符,就会导致删除事件时epoll_ctl()返回值小于0,并且提示Bad file descriptor。在事件删除后,再调用close()关闭对应的socket描述符就不会报错了。

时间: 2024-08-02 03:15:23

epoll出现Bad file descriptor的原因的相关文章

出现epoll failed: Bad file descriptor的原因

今天遇到了这个问题,之前找了半天原来是IO事件的socket描述符在epoll_ctl()处理之前关闭了. if(epoll_ctl(epollFd, EPOLL_CTL_DEL, ev->fd, &epv) < 0) fprintf(stderr, "Event Del failed[fd=%d], epoll failed: %s\n",ev->fd, strerror(errno)); 在删除事件   epoll_ctl(kdpfd, EPOLL_CTL

mongodb在ubuntu下的couldn‘t remove fs lock errno:9 Bad file descriptor的错误

按照官网上的安装方法: 在ubuntu系统下有可能出现如下错误: couldn't remove fs lock errno:9 Bad file descriptor 此时需要修改文件所有者 $ sudo mkdir -p /data/db/ $ sudo chown ’USERNAME‘ /data/db 其中第一句是建立你的数据库文件夹,第二句修改该文件夹的所有者 之后就可以成功启动mongodb了 参考:stackoverflow.com/questions/15229412/unabl

poll--wait for some event on a file descriptor

poll同select,用于监控file descriptor事件,推荐用poll的升级版epool来实现功能,但在简单应用中使用poll更方便. #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout); struct pollfd { int fd; short events; short revents; }; fds是文件描述符集的数组,nfds指定数组元素个数. pollfd中fd是打开文件的文件

python print 在windows上 出现 Bad file descriptor error

先说一下情况,一个python写的采集程序,做成windows服务在windows上运行. 这个问题出现的挺奇特,本来一套采集程序,一个采集文件的时候没问题,两个采集文件的时候也没问题,当三个采集文件的时候,就报错了. 错误:IOError: (9, 'Bad file descriptor') 我还以为是代码有问题了,最终调试了下,发现是print的问题,   原文地址:https://www.cnblogs.com/sdadx/p/10043803.html

织梦系统中出现DedeTag Engine Create File False提示原因及解决方法

今天更新网站时dedecms系统时,遇到一个问题:DedeTag Engine Create File False  出现这样的提示. 其实这也不算是什么错误,我个人觉得最重要的一点就是根目录下没有给写权限.当然,我用的是Linux系统.我直接给了777权限之后就可以了. 之后在网上看到了一些答案,也贴在这里.希望对有需要的朋友有所帮助. 第一种情况:站点.文件夹权限不足造成无法建立文件 这种情况的出现,一方面可能是Apache设置的读写权限较严格,另一方面原因可能是使用者通过服务器或FTP对一

socket:file descriptor exceeds limit (4096/4096)

前段时间同事管理的一台DNS服务器,由于并发数太大,导致了日志中存在着大量这样的记录: 有错误的字面意思,就是需要提供可以打开的socket数量,可以在/etc/sysconfig/named中添加如下配置: ulimit -HSn 200000 OPTIONS="-4 -S 8096" 然后保存,在重启named: service named restart

项目三. 基于图像压缩的视频监控系统

项目三. 基于图像压缩的视频监控系统 Sprint0-产品设计与规划 基于图像压缩的视频监控系统 1. 产品功能演示 在linux系统上运行程序,弹出登录界面,输入地址.端口信息,弹出视频监控界面,实时传出视频信息. 2. 功能模块分析 采集端: 图像采集子系统 图像编码子系统 传输子系统 主程序 监控端: 传输子系统 图像编码子系统 传输子系统 主程序 Sprint1-基于Epoll架构的采集端程序框架设计 第1课-Epoll机制精通 大纲: v  为什么用Epoll? 阻塞型IO与多路复用

cloudstack下libvirtd服务无响应问题

在cloudstack4.5.2版本下,偶尔出现libvirtd服务无响应的情况,导致virsh命令无法使用,同时伴随cloudstack master丢失该slave主机连接的情况.最初怀疑是libvirtd服务或版本的问题,经过分析和排查最终确定是cloudstack-agent的问题.但是在官网上并没有找到类似的bug提交,该问题可能还存在于更高的版本,需要时间进一步从根本上分析.下面是该问题的处理过程,在此记录下,关注和使用cloudstack的朋友可以参考. 众所周知,cloudsta

python之堡垒机(第九天)

本节作业: 通过使用paramiko和sqlalchemy实现堡垒机功能 主要功能实现: 1.用户登录堡垒机后,无需知道密码或密钥可以SSH登录远端服务器: 2.用户对一个组内所有主机批量执行指定命令,获取格式化输出: 3.针对远端主机,可以进行上传下载文件: 4.用户在远端主机上执行的命令,均被记录并入库,实现审计功能: 主要参考了alex的开源代码jumpserver,并添加部分功能. 一.堡垒机具体介绍: 1.堡垒机功能 :        堡垒机,也称为跳板机,多用于系统运维环境中.指的是