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