Дайте NSPipe
или NSFileHandle
в качестве standardOutput
задания и прочитайте его.
NSTask * list = [[NSTask alloc] init];
[list setLaunchPath:@"/bin/ls"];
[list setCurrentDirectoryPath:@"/"];
NSPipe * out = [NSPipe pipe];
[list setStandardOutput:out];
[list launch];
[list waitUntilExit];
[list release];
NSFileHandle * read = [out fileHandleForReading];
NSData * dataRead = [read readDataToEndOfFile];
NSString * stringRead = [[[NSString alloc] initWithData:dataRead encoding:NSUTF8StringEncoding] autorelease];
NSLog(@"output: %@", stringRead);
Обратите внимание, что если вы используете трубу, вам нужно беспокоиться о ее заполнении. Если вместо этого вы предоставите NSFileHandle
, задача может вывести все, что ей нужно, и вам не придется беспокоиться о ее потере, но вы также получите дополнительные расходы на запись данных на диск.