Я пытаюсь использовать NSTask для запуска UNIX команды apropos.Вот мой код:
NSTask *apropos = [[NSTask alloc] init];
NSPipe *pipe = [[NSPipe alloc] init];
[apropos setLaunchPath:@"/usr/bin/apropos"];
[apropos setArguments:[NSArray arrayWithObjects:@"filename", @"match", nil]];
[apropos setStandardOutput:pipe];
[apropos launch];
[apropos waitUntilExit];
Проблема в том, что это никогда не вернется.Я также попытался использовать пример кода Apple (TaskWrapper), и он возвращает вывод (в трех сегментах), но он никогда не вызывает обработчик processFinished.
Кроме того, обработчик appendOutput: получает дубликаты.Так, например, если apropos возвращает это:
1 2 3 4 5
Я мог бы получить что-то вроде этого:
1 2 3
12 3 4
5
(сгруппированы в 3 добавляемых сообщения).
Замечу, что Apropos отображает вывод в формате, в котором можно прокручивать вверх и вниз вкомандная строка вместо прямого вывода данных прямо на стандартный вывод;как мне надежно прочитать это через NSTask и NSPipe?