切换后台任务时SIGPIPE崩溃

Posted

技术标签:

【中文标题】切换后台任务时SIGPIPE崩溃【英文标题】:SIGPIPE crash when switching background task 【发布时间】:2011-08-08 12:30:34 【问题描述】:

在将我的应用程序发送到后台、加载新应用程序、将设备切换到睡眠模式、唤醒设备、关闭新应用程序然后从后台任务打开我的应用程序时,我遇到了奇怪的崩溃。将出现黑屏,我无法使用主页按钮退出此黑屏,并且在调试器中显示以下消息:

节目接收信号:“SIGPIPE”。 数据格式化程序不可用(错误 调用 dlopen 为: “/开发者/usr/lib/libXcodeDebuggerSupport.dylib”: "dlopen(/Developer/usr/lib/libXcodeDebuggerSupport.dylib, 10): 没有找到合适的图片。做过 找: /Developer/usr/lib/libXcodeDebuggerSupport.dylib: 地址空间不足 /Developer/usr/lib/libXcodeDebuggerSupport.dylib: stat() 失败,错误号=868226285

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

通过setsockopt() 在您的套接字上设置SO_NOSIGPIPE,或忽略所有SIGPIPE 信号: signal(SIGPIPE, SIG_IGN).

【讨论】:

使用signal(SIGPIPE, SIG_IGN),Xcode 调试器可能仍会因 SIGPIPE 信号而停止。在这种情况下,只需按下 Continue 按钮,Xcode 就会愉快地忽略 SIGPIPE。

以上是关于切换后台任务时SIGPIPE崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Elixir 长时间运行的后台任务未完成,有时会崩溃

在页面切换时使用RxJava持续更新UI界面

Linux任务前后台的切换

当 iOS 应用程序进入后台时,是不是会暂停冗长的任务?

我的几个常用linux命令

如何把linux后台任务调到前台