程序出现broken pipe 错,怎么解决??
我得一个程序,稳定性要求很高的。最好能365天(不出问题,^_^),但是昨天晚上报错:
写入失败,broken pipe 。
这是我和移动的一个接口,平时没有流量时用keep-alives保持连接。
看了一些文档,怀疑这和移动的服务器有关(他方的程序可能关闭了socket),但是我不敢肯定。
希望各位大侠告诉我原因和解决办法,让我尽量把这个程序构建得稳定一些。
谢谢各位!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
在你的程序里加入类似下面的代码段,当然要按自己的要求修改一下,就可以了扑捉SIGPIPE信号,用自己的方式处理这个信号。
void signalProc(int sig)
{
switch(sig)
{
case SIGPIPE:
p_log(LOG_DEBUG, "SIGPIPE");
break;
default:
p_log(LOG_DEBUG, "Unknow signal!");
break;
}
}
signal(SIGPIPE, signalProc);
断开的管道和非正常关闭socket有关
在recv/send里面加上MSG_NOSIGNAL参数即可
或者设置信号处理
没有信号处理的程序,不要想365天稳定
tks
不一定,如果你的程序用PIPE写,也可以是自己程序的问题
大侠,就是说 是由对方引起的?
谢谢你
broken pipe? pipe 另一端休息了或退出了,写入端就出现。具体的和你的应用有关的,谁人能明白?
真是人心不古,在程序开发区发的贴子也是无人回答!