0
我已经阅读使用NSTask这样做的解决方案:他们都看起来非常非常长...因此,我设法使用此代码做同样的事情(它获得标准输出和标准错误):得到输出的命令在ObjC
NSTask *task = [NSTask new];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:@[ @"-c", @"aCommand"]];
NSString *stringToRemove = [task description];
[task launch];
NSString *output = [[task description] stringByReplacingOccurrencesOfString:stringToRemove withString:@""];
使用此解决方案有什么缺点吗?有没有更简单的方法来过滤输出?
[任务waitUntilExit]是否避免了获得持续命令的完整输出的问题? – user732274 2013-03-19 14:57:00
不是; 'waitUntilExit'将确保所有的输出已经生成,但是你仍然需要一个'NSPipe'或'NSFileHandle'来消耗输出,并且可能会用'readInBackgroundAndNotify:'这样的方法来完成。 – bbum 2013-03-19 15:01:53