在没有debugging器的情况下,标准输出redirect在iOS中不起作用
我正在尝试redirect输出,所以我可以通过networking发送它。 由于某种原因,如果在debugging器连接的时候运行代码,它完美的工作。 一旦以正常的方式启动应用程序,代码会冻结读取函数,并且永远不会返回。 如果有人有任何指示,我会高度赞赏它。
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; } } });
显然在iOS 5.1写入标准输出是不允许的。 http://spouliot.wordpress.com/2012/03/13/ios-5-1-vs-stdout/