当Pid死亡时,它释放与其关联的所有文件句柄/端口。如果进程即将死亡,我应该打扰如gen_tcp:close或ssl:close这样的操作,即使它是最后一件事情?如果Pid即将死亡,我应该打扰关闭套接字连接吗?
4
A
回答
7
“我应该打扰”你的意思是,“我会冒内存泄漏吗?”,或者“会导致数据丢失吗?”,还是“影响客户端看到和关闭连接的方式?
也就是说,出于客户的考虑,发布close命令被认为是礼貌的。客户端可能会在连接中看到突然中断,而不是关闭。例如,如果它是一个web服务器,并且您发送关闭请求而不是,那么某些浏览器会将其作为管道中断(错误)读取,并立即尝试重新连接。正确地关闭连接只是礼貌的,它将有助于保持您的代码的逻辑组织(您知道正好您的所有资源如何处理)。
我不是100%确定erlang如何处理垃圾回收,但我可以说对于大多数编程语言(因此我假设erlang也是这样),杀死进程将处理所有的与它相关联的内存,所以应该没有内存泄漏只是让进程死亡。
但是,如果缓冲区中有潜在内容发送给客户端,则可能希望使您的退出过程在关闭之前刷新缓冲区或连接,否则可能会导致数据丢失。
编辑:如legoscia提到,任何打开的文件描述符应该从容通过二郎处理,但它绝不会伤害(我把它叫做“良好做法”)退出进程之前,自己关闭它们。
相关问题
- 1. 如何关闭被死亡程序打开的套接字?
- 2. 关闭套接字连接
- 3. 我应该关闭makefile'ed套接字,它是独立的原始套接字吗?
- 4. 我应该在Python中显式关闭zeromq套接字吗?
- 5. 我应该关闭两端的套接字吗?
- 6. 你应该总是关闭连接吗?
- 7. 如何关闭PrimeFaces套接字连接
- 8. 如何关闭并清理死亡(僵尸)连接?
- 9. 我应该打开和关闭每个事务的套接字吗?
- 10. 我需要关闭套接字吗?
- 11. 如何关闭套接字,如果它正在监听连接
- 12. 监听套接字死亡意外
- 13. Java套接字服务器死亡
- 14. 如果发送太多数据,Web套接字关闭连接
- 15. 谁关闭了套接字连接
- 16. 用PHP关闭套接字连接
- 17. java.net.SocketException:套接字已关闭TCP连接
- 18. 套接字连接不会关闭?
- 19. 我应该关闭我的数据库连接吗?
- 20. .NET Remoting套接字不会死亡,即使在进程之后
- 21. 如果连接了jquery-ui.js,我应该连接jquery-ui.css吗?
- 22. 是否ServerSocket.close()应该关闭所有打开的套接字?
- 23. Netty:如果它是'保持活动'连接,我应该关闭频道吗?
- 24. Chrome - 禁用Web套接字或关闭Web套接字连接?
- 25. 关闭套接字后,套接字连接保持ESTABLISHED
- 26. 为什么我应该关闭或保持Redis连接打开?
- 27. 我应该在收到304后关闭代理连接吗?
- 28. 我应该明确关闭RethinkDB连接吗?
- 29. 我应该关闭方法调用之间的mySQL连接吗?
- 30. 我应该关闭来自数据源的连接吗?
请记住,Erlang“进程”与OS“进程”不同,并且Erlang运行时可以在一个OS进程中运行许多Erlang进程。 – 2012-08-13 01:50:56
但是Erlang进程的行为却类似:所有内存在进程活动结束时被释放 – 2012-08-13 09:45:06
当涉及套接字时,您还需要避免泄漏文件描述符。我*想*爱尔兰照顾你,但如果我完全确定,我会张贴作为回答:) – legoscia 2012-08-13 16:10:05