概述
写网络程序时候, 当向对方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/
最后
以上就是苹果大象为你收集整理的iOS 忽略SIGPIPE的问题的全部内容,希望文章能够帮你解决iOS 忽略SIGPIPE的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复