1

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

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

1 回答 1

3

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

于 2012-09-20T00:49:39.977 回答