Boost.Asio套接字中有一个函数赋值,但我正在寻找类似
的东西或
我知道this solution但它涉及复制套接字(即创建新描述符而不是释放一个)。
有谁知道如何做到这一点?
修改:没有这样的功能,为Boost.Asio https://svn.boost.org/trac/boost/ticket/3900打开了票证
答案 0 :(得分:1)
我在.hpp文件中找不到任何这样的方法(Boost 1.35),所以我认为你必须自己修补ASIO并添加release()
方法。完成后,您可以自己保留补丁,将其发布到您的网站(或此处),或将其提交回Boost。
尝试Boost邮件列表。那里的人可能会告诉你这种方法是好是坏,为什么。如果您在那里找到任何有趣的内容,请在此处发布摘要。
BTW:昨天发布了1.42升。
答案 1 :(得分:1)
我过去通过使用dup系统调用来创建另一个文件描述符来完成此任务。
int fd = dup(old_fd)
socket.assign(... fd)
它显然没有与释放描述符相同的语义,但是当您需要将Boost.Asio层叠在假定描述符所有权的现有层之上或之下时,它可以很好地工作。