У меня очень странная проблема с методом, который содержит NSTask. В 10.7+ функционал работает абсолютно нормально и успешно выполняется, возвращая результат и копируя файл в нужную директорию.
При попытке моего приложения в 10.6.8 NSTask, кажется, вообще ничего не делает, на самом деле никаких ошибок или чего-то еще, что могло бы дать мне подсказку, почему оно не работает. Я испробовал каждый возможный угол, чтобы определить, в чем проблема, и я исчерпал все возможности. :-/
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
NSArray *arguments = [NSArray arrayWithObjects: @"-c",
@"find /Data/*.jug/files/ -name thefile | head -n 1 | awk -v dir=\"$HOME/path/to/copy/to\" '{printf \"cp \\\"%s\\\" \\\"%s\\\"\\n\", $1, dir }' | sh", nil];
[task setArguments: arguments];
NSPipe *thePipe = [NSPipe pipe];
[task setStandardInput:[NSPipe pipe]];
[task setStandardOutput:thePipe];
[task launch];
[task waitUntilExit];
[task release];
Если попробовать команду через терминал в 10.6.8, я получу результаты, которые я ожидал получить в своем приложении. Я в полной растерянности и очень надеюсь, что кто-то может пролить свет на эту проблему и как ее исправить.
setStandardError
и не получил ничего другого, однако я заглянул в журналы своей консоли и заметил, что это отображается:/Data/*.jug: Not a directory
- (это каталог, хотя 10.6.8 его не видит этак наверно от расширения на конце?). - person Jack Handy   schedule 02.01.2013