我需要将最后添加的行实时读取到日志文件中,并捕获正在添加的行。
类似于 Tail -f 的东西。
所以我的第一次尝试是通过 NSTask 使用 Tail -f。
使用下面的代码我看不到任何输出:
NSTask *server = [[NSTask alloc] init];
[server setLaunchPath:@"/usr/bin/tail"];
[server setArguments:[NSArray arrayWithObjects:@"-f", @"/path/to/my/LogFile.txt",nil]];
NSPipe *outputPipe = [NSPipe pipe];
[server setStandardInput:[NSPipe pipe]];
[server setStandardOutput:outputPipe];
[server launch];
[server waitUntilExit];
[server release];
NSData *outputData = [[outputPipe fileHandleForReading] readDataToEndOfFile];
NSString *outputString = [[[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding] autorelease];
NSLog (@"Output \n%@", outputString);
使用时我可以看到预期的输出:
[server setLaunchPath:@"/bin/ls"];
我如何捕获该尾部 NSTask 的输出?
这种方法是否有任何替代方法,我可以在其中打开文件流,并且每次添加一行时,将其输出到屏幕上?(基本的日志记录功能)