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:@""];
이 솔루션을 사용하는 데는 단점이 있습니까? 출력을 필터링하는 더 짧은 방법이 있습니까?
[task waitUntilExit]은 오래 지속되는 명령의 전체 출력 문제를 방지합니까? – user732274
Nope; 'waitUntilExit'은 모든 출력이 생성되었음을 보장하지만, 출력을 소비하려면'NSPipe' 나'NSFileHandle'이 필요하고,'readInBackgroundAndNotify :'와 같은 것을 사용하면됩니다. – bbum