Получение данных из nstask - взаимодействие с командной строкой - цель c

Я знаю, как отправлять данные задаче:

NSData *charlieSendData = [[charlieImputText stringValue] dataUsingEncoding:NSUTF8StringEncoding];
[[[task standardInput] fileHandleForWriting] writeData:charlieSendData];

Но как мне узнать, что задача отвечает ??

Elijah

14
задан Andrew 19 December 2011 в 21:50
поделиться

1 ответ

Задайте NSPipe или NSFileHandle в качестве стандартного вывода задачи и прочтите его.

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 , задача может выводить все, что хочет, без необходимости беспокоиться о потере чего-либо, но вы также получаете накладные расходы, связанные с записью данных на диск.

33
ответ дан 1 December 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: