我正在尝试重定向输出,以便我可以通过网络发送它。出于某种原因,如果在附加调试器的情况下运行代码,它可以完美地工作一旦以正常方式启动应用程序,代码就会冻结读取函数,永远不会返回。如果有人有任何指示我会非常感激。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^(void) {
static int pipePair[2];
if ( pipe(pipePair) != 0) {
return;
}
dup2(pipePair[1],STDOUT_FILENO);
while (true) {
char * buffer = calloc(sizeof(char), 1024);
ssize_t readCount = read(pipePair[0],buffer,1023);
if (readCount > 0) {
buffer[readCount] = 0;
NSString * log = [NSString stringWithCString:buffer encoding:NSUTF8StringEncoding];
//sent it over network
}
if (readCount == -1) {
return;
}
}
});
答案 0 :(得分:3)
显然在iOS 5.1中写入stdout是不允许的。 http://spouliot.wordpress.com/2012/03/13/ios-5-1-vs-stdout/