我正在使用 iOS 进行开发。
App调用库中的函数,通过wifi发送数据包。
当应用程序运行时,我按下 iPhone 5C 上的电源按钮(不是主页按钮)并再次按下以打开它。但它崩溃了...
它没有显示哪一行是错误的,它只显示如下图所示的错误:
如何通过上图分析这个崩溃日志?
提前致谢。
我正在使用 iOS 进行开发。
App调用库中的函数,通过wifi发送数据包。
当应用程序运行时,我按下 iPhone 5C 上的电源按钮(不是主页按钮)并再次按下以打开它。但它崩溃了...
它没有显示哪一行是错误的,它只显示如下图所示的错误:
如何通过上图分析这个崩溃日志?
提前致谢。
正如 Apple 所提到的,在避免常见网络错误中,您需要处理或禁用SIGPIPE
:
有效地使用 POSIX 套接字(如果有的话)。
如果您直接使用 POSIX 套接字:
- 处理或禁用 SIGPIPE。
当连接关闭时,默认情况下,您的进程会收到一个
SIGPIPE
信号。如果您的程序不处理或忽略此信号,您的程序将立即退出。您可以通过以下两种方式之一处理此问题:使用以下代码行全局忽略信号:
signal(SIGPIPE, SIG_IGN);
首先使用以下代码行告诉套接字不要发送信号(用包含您的套接字的变量代替
sock
):int value = 1; setsockopt(sock, SOL_SOCKET, SO_NOSIGPIPE, &value, sizeof(value));
为了获得最大的兼容性,除了在侦听套接字本身上设置标志之外,您还应该在调用 accept 后立即在每个传入套接字上设置此标志。