Donner une NSPipe
ou un NSFileHandle
comme de standardOutput
, et lisez la tâche de cela.
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);
Notez que si vous utilisez un tuyau, vous avez à vous soucier de la conduite de remplissage vers le haut. Si vous fournissez un NSFileHandle
à la place, la tâche peut générer tout ce qu'elle veut sans que vous ayez à vous soucier de perdre quoi que ce soit, mais vous avez également besoin d'écrire les données sur le disque.
je fais déjà. [tâche standardOutput] - Si j'appelle juste cela, donnera-t-il la sortie? – objectiveccoder001
@Elijah par défaut, non. Si vous voulez la sortie, vous devez fournir un pipe ou un handle de fichier avant de lancer la tâche, puis commencer à lire depuis le handle de fichier (ou '[pipe fileHandleForReading]') afin de récupérer les données. (Et il vous donnera des objets 'NSData', pas de chaînes ou quoi que ce soit) –
Pouvez-vous montrer un exemple? – objectiveccoder001