原因:IOS 锁屏,然后解屏后,会发出一个SIGPIPE 信号,大家都知道,系统默认收到该信号,进程退出的。
解决:
方法1:signal( SIGPIPE, SIG_IGN ); 该方法不知道为什么,在IOS 真机下跑,无法捕捉SIGPIPE;
方法2:setsockopt( nSocket, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int) ); 该方法可以彻底解决
所以只能使用方法2;
引出的其他问题:
锁屏,解屏后,对锁屏前的socket 进行recv 会返回-1, 这时候需要关闭socket ,重新创建。
暂时只有这个方法了。。