IOS 把shell信息或者NSlog输出信息 显示在视图

//标准输出

[self redirectSTD:STDOUT_FILENO];

//错误输出

  //[self redirectSTD:STDERR_FILENO];

 

- (void)redirectNotificationHandle:(NSNotification *)nf{

    NSData *data = [[nf userInfo] objectForKey:NSFileHandleNotificationDataItem];

    NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    if (![str isEqualToString:@""]) {

        textView.text = [NSString stringWithFormat:@"%@\n%@",textView.text, str];

        NSRange range;

        range.location = [textView.text length] - 1;

        range.length = 0;

        [textView scrollRangeToVisible:range];

    }

    [[nf object] readInBackgroundAndNotify];

}

 

- (void)redirectSTD:(int )fd{

    NSPipe * pipe = [NSPipe pipe] ;

    NSFileHandle *pipeReadHandle = [pipe fileHandleForReading] ;

    dup2([[pipe fileHandleForWriting] fileDescriptor], fd) ;

    

    [[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(redirectNotificationHandle:)

                                                 name:NSFileHandleReadCompletionNotification

                                               object:pipeReadHandle] ;

    [pipeReadHandle readInBackgroundAndNotify];

}

 

posted @ 2015-01-04 13:28  yangli(iOS)  阅读(586)  评论(1编辑  收藏  举报