关闭 OTP 主管拥有的 gen_tcp 侦听套接字
Posted
技术标签:
【中文标题】关闭 OTP 主管拥有的 gen_tcp 侦听套接字【英文标题】:Closing a gen_tcp listen socket that is owned by an OTP supervisor 【发布时间】:2019-02-22 11:46:47 【问题描述】:一些教程,包括这个Learn You Some Erlang,展示了 OTP 主管将打开并拥有一个 TCP 侦听套接字并将其共享给许多接受连接的工作人员的应用程序。
我的问题是,如何在没有终止/2 回调函数的情况下关闭主管拥有的侦听套接字?
【问题讨论】:
【参考方案1】:套接字链接到拥有它的进程。如果该进程退出,则套接字将自动关闭。 (这适用于监听套接字和连接套接字。)
(拥有套接字的进程就是创建它的进程,除非您调用gen_tcp:controlling_process
重新分配套接字的所有权。)
【讨论】:
感谢您的回答!无论进程正常退出还是异常退出,它们都会自动关闭吗? 是的,两种情况都一样。以上是关于关闭 OTP 主管拥有的 gen_tcp 侦听套接字的主要内容,如果未能解决你的问题,请参考以下文章
如果达到超时,gen_tcp:recv/3 是不是会关闭套接字?
如何在 gen_tcp:accept 上调用(和睡眠)并同时处理系统消息?