iOS 忽略SIGPIPE的问题

写网络程序时候, 当向对方write数据的时候, 如果连接断开(如对方主动close了连接), 会产生SIGPIPE信号, 还比如:往前调手机时间,启动APP联网立即崩溃,如果不对这个信号处理程序就会退出或者也可以说崩掉了, 所以一般简单处理就是忽略掉这个信号,
signal(SIGPIPE, SIG_IGN);
但是遇到一个诡异的问题, 用Xcode debug设备做并发测试的时候程序就会崩溃, 怎么都查不出来原因, 后来不用Xcode debug, 直接在设备运行App再进行压力测试就没问题了, 也就是说在Xcode debug的时候, 忽略SIGPIPE是不起作用的.

小记一下.

最近测试发现, 即使忽略SIGPIPE信号, socket write操作时候依然会出现崩溃, 这里需要通过设置socket属性来解决.
int val = 1;

setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&val, sizeof(int));


转自http://blog.patpig.com/2012/12/03/ios-ignore-sigpipe-issue/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值