Program received signal SIGPIPE, Broken pipe

来源:互联网 发布:火箭卡佩拉臂展数据 编辑:程序博客网 时间:2024/05/23 00:04
Program received signal SIGPIPE, Broken pipe
what happen?
你write的fd被对方关闭了。需要如下调用避免signal(SIGPIPE, SIG_IGN);并且处理write的返回,errno=EPIPE

如果使用ACE_TASK的话,可能handle_input已经接收到Client断开连接的信号,但svc中的线程可能还在向这个连接发送数据,
就有可能出现上面的问题,简单解决的办法就是创建一个变量,一旦接收到断开连接的信号,就改变这个变量的值,svc中的线程
在发送数据前检测这个变量的值,避免向已经关闭的socket发送数据

原创粉丝点击