提升 ASIO 套接字使用文件描述符
Boost ASIO socket consumes file descriptors
我正在使用 Boost ASIO 套接字与 Linux 下的一些远程设备进行通信,但是当端点无法访问时,我遇到了问题。首先,下面是显示此问题的代码部分:
try {
if(mysocket == NULL)
{
mysocket = new boost::asio::ip::tcp::socket(io_service);
}
mysocket->connect(boost::asio::ip::tcp::endpoint(boost::asio::ip::address::from_string("192.168.0.12"), 1));
printf("connectedn");
return 0;
}
catch (std::exception &e)
{
boost::system::error_code ec;
mysocket->close(ec);
delete mysocket;
mysocket = NULL;
printf("not connected %sn", e.what());
}
通过在我的类中使用这段代码,我得到了越来越多的 eventfd 类型的文件描述符,直到所有可用的 fds 都被使用并且应用程序崩溃。上面的代码有问题吗?为什么 boost 不关闭文件描述符?我什至删除了插座!提前感谢!
问题是由于没有释放资源,例如升压套接字。这些套接字留下了打开的文件,这些文件逐渐达到了我系统中的打开文件限制,因此尝试打开其他文件会导致错误。实际的异常是由提升UUID生成器引发的,它无法打开文件!
相关文章:
- 使用VerQueryValue检索应用程序的文件描述
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- I2C 文件描述符上的 I2C 总线可写/可读标志
- 许多文件描述符在调用sys_clone时
- AMQP-CPP >处理程序中的错误文件描述符
- 如何使用 WINAPI 和 C++ 提取可执行文件的文件描述?
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- 有没有适用于Windows.lib文件的GNU二进制文件描述符(BFD)
- 如何强制文件描述符缓冲我的输出
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- 哪个更适合从C++写入敏感的日志文件,在文件描述符上写()或文件上的fprintf()?
- 将 select() 与非基于文件描述符的输入一起使用
- accept(..) 似乎正在修改我给它的文件描述符参数
- 使用 Select 多路复用未命名的管道和其他文件描述符
- 提升 ASIO 绑定:错误的文件描述符
- 使用文件描述符移动对象
- 无法从零MQ ZMQ_SERVER套接字中获取文件描述符
- read() 上的不同行为取决于写入不可写内存时表示文件、匿名管道或套接字的文件描述符
- 我可以在不使用 FIOCANCEL 的情况下关闭 VxWorks 中的文件描述符吗?
- 将 Boost Asio 与 ZeroMQ 集成,文件描述符错误?