没有调试器的Stdout重定向在iOS中不起作用

时间:2012-06-04 16:44:40

标签: iphone ios stdout io-redirection

我正在尝试重定向输出,以便我可以通过网络发送它。出于某种原因,如果在附加调试器的情况下运行代码,它可以完美地工作一旦以正常方式启动应用程序,代码就会冻结读取函数,永远不会返回。如果有人有任何指示我会非常感激。

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;
                }
            }
        });

1 个答案:

答案 0 :(得分:3)

显然在iOS 5.1中写入stdout是不允许的。 http://spouliot.wordpress.com/2012/03/13/ios-5-1-vs-stdout/