gpt4 book ai didi

c++ - Boost ASIO socket 消耗文件描述符

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:21 25 4
gpt4 key购买 nike

我在 linux 下使用 Boost ASIO 套接字与一些远程设备进行通信,但是当无法访问端点时我遇到了问题。首先,这是显示此问题的代码部分:

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("connected\n");
return 0;
}
catch (std::exception &e)
{
boost::system::error_code ec;
mysocket->close(ec);
delete mysocket;
mysocket = NULL;
printf("not connected %s\n", e.what());
}

通过在我的类中使用这段代码,我得到越来越多的 eventfd 类型的文件描述符,直到所有可用的 fds 都被使用并且应用程序崩溃。上面的代码有问题吗?为什么boost不关闭文件描述符?我什至删除了套接字!提前致谢!

最佳答案

问题是因为没有释放资源,比如boost sockets。这些套接字留下打开的文件,逐渐达到我系统中的打开文件限制,因此尝试打开其他文件导致错误。实际异常是由 boost UUID 生成器抛出的,它无法打开文件!

关于c++ - Boost ASIO socket 消耗文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12909170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com