EMFILE处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxt_1/article/details/89762105
  • 产生原因:

进程打开的文件描述符达到上限,服务器accept时,返回EMFILE

  • 问题:
    listenfd一直处于监听状态,而此时服务器无法接受客户端的连接,所以会一直触发,产生busy loop
  • 处理方法:
    一开始打开一个空闲的文件描述符;
    当遇到上述情况时,先关闭这个文件描述符,此时将获得一个文件描述符的名额;
    再用accept接受客户端连接;
    立即关闭connectfd(优雅的与客户端断开连接);
    重新打开一个文件描述符,以备再次出现上述情况。

使用方式参看c++版本注释

猜你喜欢

转载自blog.csdn.net/zxt_1/article/details/89762105
今日推荐