Запуск NSTask соединяет каналом не доступный

Я использую следующий код в своем проекте Какао назвать сценарий, который я сделал. Сценарий находится в той же папке как проект и даже обнаруживается под папкой "Resources" в XCode. Надлежащий путь найден, но он все еще говорит, что путь не доступен. Справка.

NSBundle *mainBundle=[NSBundle mainBundle];
NSString *path=[mainBundle pathForResource:@"script" ofType:@"sh"];

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: path];

NSLog (path);

NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
[task setStandardError: pipe];

NSFileHandle *file = [pipe fileHandleForReading];

[task launch];
[task waitUntilExit];

NSData *data = [ddFile readDataToEndOfFile];

NSString *output = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
HDSpeed = [f output];

[f release];    
[task release];

Вывод я вхожу в отладчик:

2010-07-10 17:53:26.384 tester[5023:a0f] /Users/guest/Library/Developer/Xcode/DerivedData/tester-bhukztmqjwoqrwereagsshvtbfqx/Build/Products/Debug/tester.app/Contents/Resources/script.sh

2010-07-10 17:53:26.386 tester[5023:a0f] launch path not accessible

9
задан kiamlaluno 11 July 2010 в 04:57
поделиться

1 ответ

Что вам нужно сделать, так это получить двоичный файл оболочки и передать ему свой сценарий в качестве аргумента. Так, если сценарий оболочки написан на bash, получите интерпретатор bash и передайте ему список аргументов с одним аргументом: путь к вашему script.sh.

4
ответ дан 4 December 2019 в 21:07
поделиться