- (void)fileHandleReadCompletionNotification:(NSNotification *)notification {
NSData *logData = [[notification userInfo] objectForKey:NSFileHandleNotificationDataItem];
NSString *logString = [[NSString alloc] initWithData:logData encoding:NSUTF8StringEncoding];
[[notification object] readInBackgroundAndNotify];
}
- (void)redirectSTD:(int)fileDescriptor {
NSPipe *pipe = [NSPipe pipe] ;
NSFileHandle *pipeReadHandle = [pipe fileHandleForReading] ;
dup2([[pipe fileHandleForWriting] fileDescriptor], fileDescriptor) ;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(fileHandleReadCompletionNotification:)
name:NSFileHandleReadCompletionNotification
object:pipeReadHandle];
[pipeReadHandle readInBackgroundAndNotify];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self redirectSTD:STDOUT_FILENO];
[self redirectSTD:STDERR_FILENO];
return YES;
}