- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我的示例应用程序中它显示 SIGPIPE 错误,即使我在 main.m 文件中忽略了该信号
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
signal(SIGPIPE, SIG_IGN);
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
gdb的回溯是
#0 0x38579eb4 in mach_msg_trap ()
#1 0x3857a04c in mach_msg ()
#2 0x3605b044 in __CFRunLoopServiceMachPort ()
#3 0x36059d5e in __CFRunLoopRun ()
#4 0x35fccebc in CFRunLoopRunSpecific ()
#5 0x35fccd48 in CFRunLoopRunInMode ()
#6 0x328cf2ea in GSEventRunModal ()
#7 0x32939300 in UIApplicationMain ()
#8 0x000b6c52 in main (argc=1, argv=0x2fd4bc40) at /Users/bdsu/Desktop/Git_repo/VoipApp_iOS/VoipApp_iOS/main.m:17
当我进入待机模式并返回时,会发生此错误。我已经使用 IOS 6.0 在 IPAD 上对其进行了测试。 Xcode 版本是 4.5/5.0 。
最佳答案
我的应用在后台运行时需要互联网连接。但并非所有应用程序都获得在后台运行的权限。您必须将应用程序的后台模式设置为 voip 应用程序,并且还有一些其他选项可用于使其在后台运行。此外,默认情况下,IOS 会在后台 10 分钟后暂停所有应用程序,并且套接字正在关闭,这会导致 sigpipe
错误。这就是为什么我编写了一个函数,当应用程序进入后台时将调用该函数并使应用程序保持事件状态。这样,应用程序在后台运行时将获得互联网连接并避免 sigpipe
。
关于ios - 即使忽略 SIGPIPE 信号,IOS 6.0 也会出现 SIGPIPE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830244/
在我的示例应用程序中它显示 SIGPIPE 错误,即使我在 main.m 文件中忽略了该信号 #import #import "AppDelegate.h" int main(int argc, c
我正在处理一些代码,这些代码需要安全地防止由于 SIGPIPE 而杀死调用者,但是它正在执行的唯一套接字写入将转到数据报套接字(UDP 和 Unix 域数据报套接字) ).我需要担心 SIGPIPE
我有两个守护进程,A 正在与 B 通信。B 正在监听一个端口,A 打开一个到该端口的 tcp 连接。 A 能够打开一个到 B 的套接字,但是当它尝试实际写入所述套接字时,我得到一个 SIGPIPE,所
我正在尝试从执行工具的 bash 函数中保存一些日志(其中一些在子 shell 中运行)。此外,我想将所有错误打印到终端。 我的代码导致一个 sigpipe 并在按下 ctr-c 加上一个奇怪的日志文
我正在cocoa中开发一个应用程序,它由用java编写的客户端部分组成,监听来自服务器的请求(例如从客户端计算机读取一些歌曲或文件),有时这工作正常,但有时会出现异常,例如“收到信号SIGPIPE”
我在 C 上的服务器/客户端有这个问题。如果我在 SIGINT 之后关闭服务器套接字,然后我尝试从客户端写这个关闭的连接,我必须在客户端生成 SIGPIPE 之前写两次.它不应该立即生成吗?这是正常行
根据我的理解,SIGPIPE 只能作为 write() 的结果发生,它可以(并且确实)返回 -1 并设置 errno 到 EPIPE...那么为什么我们会有额外的信号开销呢?每次我使用管道时,我都会忽
POSIX环境中可能出现的错误有很多。为什么其中一些(特别是写入未连接的套接字)会以信号的形式得到特殊处理? 最佳答案 这是设计使然,因此当消费者死亡时,在管道中使用的生成文本(例如 find、gre
我有一个在 Linux 上运行的应用程序,捕获信号并将它们报告给系统日志。 此应用程序频繁报告 SIGPIPE 事件,没有明显原因 该应用程序作为守护进程在后台运行。信号发生在空闲时间,没有明显的网络
嗨,我必须开发这个程序,创建 4 个 child ,并依次让他们做一个简单的操作。第一个进行求和,第二个进行余数,第三个进行乘法,第四个进行除法。父亲将在套接字上写入他希望 children “计算”
我想知道 tcp 套接字是否可以立即报告任何损坏的管道错误。目前,当服务器出现故障时,我正在客户端捕获 sigpipe 信号......但我发现生成了 sigpipe 信号只有在第二个消息从客户端发送
我在 C 上的服务器/客户端有这个问题。如果我在 SIGINT 后关闭服务器套接字,然后我尝试从客户端写入这个关闭的连接,我必须先写两次客户端生成 SIGPIPE。它不应该立即生成吗?这是正常行为还是
我正在看的代码在这里: http://github.com/andymatuschak/Sparkle/blob/8ea15468b4a8c0487ca7a72f3c9e6ffb708c6af8/SU
我已经阅读了如何防止SIGPIPE,然后我写了一个小程序来测试它。这是代码。 server.c #include #include #include #include #include #i
我正在尝试在 Bash 中的两个进程之间实现命名管道通信解决方案。 第一个进程向命名管道写入内容: send(){ echo 'something' > $NAMEDPIPE } 第二个脚本应
我正在尝试编写一个包含两个进程的程序: 一个进程生成一些 a + b 问题并将其打印到其标准输出(如 printf("%d %d\n", a, b)),并从另一个进程获取答案通过 stdin,并将答案
我有一个在多个线程中共享的套接字连接池,死连接应该从池中删除,问题是我不知道哪个死于 SIGPIPE sighandler,在这种情况下有什么建议吗? 最佳答案 处理此问题的一种方法是忽略 SIGPI
我有一个用 C 编写的多线程 SSL 服务器,其行为如下: 主线程等待客户端请求 (epoll),接受它们并为每个客户端套接字生成一个分离线程 每个线程分别执行SSL_accept。 SSL 握手 成
我正在做一项作业,涉及编写一个程序来使用 fork(进程)、信号和选择来处理数据(计算 pi)。 我现在正在处理信号,我想我想做的是使用 SIGPIPE,所以如果程序捕获它,它会尝试再次写入管道(如果
所以在我的应用程序开始时我调用 signal(SIGPIPE, SIG_IGN); 我认为我的应用程序会忽略 SIGPIPE。但是,我仍然遇到以下代码导致的 SIGPIPE 崩溃: write(fd,
我是一名优秀的程序员,十分优秀!