今天下午,在IOS上调试TCP通用接口,发现总是出现SIGPIPE异常问题,一开始没想明白怎么回事,突然想起来,之前在MDO项目中LINUX下,是需要屏蔽SIGPIPE信号的,不然程序铁定崩溃。
上网搜了下,最土的办法,直接屏蔽SIGPIPE信号,次一点的,在SOCKET中用SO_NOSIGPIPE进行屏蔽。
写网络程序时候, 当向对方wrtie数据时候对方主动close了连接, 会产生SIGPIPE信号, 如果不对这个信号处理程序就会退出或者也可以说崩掉了, 所以一般简单处理就是忽略掉这个信号,
signal(SIGPIPE, SIG_IGN);
但是遇到一个诡异的问题, 用Xcode debug设备做并发测试的时候程序就会崩溃, 怎么都查不出来原因, 后来不用Xcode debug, 直接在设备运行App再进行压力测试就没问题了, 也就是说在Xcode debug的时候, 忽略SIGPIPE是不起作用的.
小记一下.
转载请注明出处.
写博客的目的:记录,升华,量变到质变