4

我正在使用 iOS 进行开发。

App调用库中的函数,通过wifi发送数据包。

当应用程序运行时,我按下 iPhone 5C 上的电源按钮(不是主页按钮)并再次按下以打开它。但它崩溃了...

它没有显示哪一行是错误的,它只显示如下图所示的错误:

在此处输入图像描述

如何通过上图分析这个崩溃日志?

提前致谢。

4

1 回答 1

3

正如 Apple 所提到的,在避免常见网络错误中,您需要处理或禁用SIGPIPE

有效地使用 POSIX 套接字(如果有的话)。

如果您直接使用 POSIX 套接字:

  • 处理或禁用 SIGPIPE。

当连接关闭时,默认情况下,您的进程会收到一个SIGPIPE信号。如果您的程序不处理或忽略此信号,您​​的程序将立即退出。您可以通过以下两种方式之一处理此问题:

使用以下代码行全局忽略信号:

signal(SIGPIPE, SIG_IGN);

首先使用以下代码行告诉套接字不要发送信号(用包含您的套接字的变量代替sock):

int value = 1;
setsockopt(sock, SOL_SOCKET, SO_NOSIGPIPE, &value, sizeof(value));

为了获得最大的兼容性,除了在侦听套接字本身上设置标志之外,您还应该在调用 accept 后立即在每个传入套接字上设置此标志。

于 2015-08-25T07:12:49.107 回答