Может ли кто-нибудь помочь мне преобразовать следующий код в код, который вместо этого имеет два NSTask для «cat» и «grep», показывая, как их можно соединить вместе с помощью каналов? Я предполагаю, что предпочел бы последний подход, так как тогда мне больше не нужно беспокоиться о цитировании и прочем.
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
NSArray *arguments;
arguments = [NSArray arrayWithObjects: @"-c",
@"cat /usr/share/dict/words | grep -i ham", nil];
[task setArguments: arguments];
[task launch];
Обновление: обратите внимание, что cat и grep здесь приведены просто как (паршивый) пример. Я все еще хочу сделать это для команд, которые имеют больше смысла.
cat
.grep
принимает несколько файловых аргументов после шаблона, поэтому вам следует использоватьgrep -i ham /usr/share/dict/words
. И смотрите: ваша проблема исчезает, так как вы можете запускатьgrep
напрямую и больше не нуждаетесь в конвейере. - person Jeremy W. Sherman   schedule 05.06.2011