unix – 在没有结束调用close()或崩溃的情况下,什么会导致自发的
我有一个由两个进程组成的应用程序(让我们称之为A和B),通过Unix域套接字相互连接.大多数情况下它工作正常,但有些用户报告以下行为:
> A向B发送请求.这有效. A现在开始阅读B的回复. 用户还报告了此行为的变化,例如: > A向B发送请求.这部分工作,但在发送整个请求之前A的write()调用返回EPIPE,结果是一个close()套接字.但是B没有关闭()套接字,也没有崩溃. 问题是我无法在本地重现此行为.我试过OS X和Linux.用户使用各种系统,主要是OS X和Linux. 我已经尝试过并考虑过的事情: > Double close()错误(在同一文件描述符上调用close()两次):可能不会导致EBADF错误,但我还没有看到它们. 还有什么可能导致这样的行为?我肯定知道A和B都不会过早地关闭()套接字,并且我肯定地知道它们都没有崩溃,因为A和B都能够报告错误.好像内核突然决定出于某种原因从插座拔出插头. 解决方法
也许你可以尝试strace,如:
http://modperlbook.org/html/6-9-1-Detecting-Aborted-Connections.html中所述
我假设您的问题与此处描述的问题有关:http://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable 不幸的是,我自己有一个similar problem,但无法通过给定的建议来解决问题.但是,也许SO_LINGER的东西适合你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – 如何解决visual studio 2015 update 3上的“B
- Angular $scope和$rootScope事件机制之$emit、$broadcast和
- scala – Perl 6中的模式匹配是否有保护条款?
- Karma测试似乎没有加载我的Angularjs控制器
- 这是一个scala bug还是我做错了什么
- Angular4_父组件中修改子组件样式
- WebService之Axis2快速入门(9): 编写Axis2模块(Module)
- 什么是 shell
- macos – OSX终端:如何杀死具有相同名称的所有进程
- angularjs – 无法找到指令’…’所需的控制器’ngModel’