2014-12-17 4 views
1

Извините, английский не является моим первым языком, и у меня плохое умение грамматики.Run NSTask from .command

Привет, Я разработчик, который является очень новым для Objective-C, и у меня есть некоторые проблемы с использованием NSTask. У меня есть файл .command, который я хочу выполнить в этом приложении для какао, но если я использую команду «open», используя NSTask для запуска файла, он запускает терминал. Есть ли способ просто выполнить его, не запуская его, как обычный NSTask? Или я могу просто иметь текстовый файл с командой, которая будет выполнена? Спасибо.

Вот мой код ...

NSString *pathtorb = [[NSBundle mainBundle] pathForResource:@"rightSpace" ofType:@"command"]; 

NSTask *DfileBlankSpace = [[NSTask alloc]init]; 
DfileBlankSpace.launchPath = @"/usr/bin/open"; 
DfileBlankSpace.arguments = @[pathtorb]; 
[DfileBlankSpace launch]; 
[DfileBlankSpace waitUntilExit]; 

NSTask *killDock = [[NSTask alloc]init]; 
killDock.launchPath = @"/usr/bin/killall"; 
killDock.arguments = @[@"Dock"]; 
[killDock launch]; 
[killDock waitUntilExit]; 
+0

Вы запускаете командное приложение с именем 'open', чтобы открыть файл в pathtorb. –

ответ

0

.command это просто сценарий оболочки, вместо того, чтобы использовать open - который связывает эти файлы с терминала - запустить sh Попутно -c и имя пути файла, как аргументы:

DfileBlankSpace.launchPath = @"/bin/sh"; 
DfileBlankSpace.arguments = @[@"-c", pathtorb]; 

HTH

Добавление

Как @KenThomases как указывалось в комментариях, если вы не избежали pathorb сделать это правильный путь bash, то вы должны опустить @"-c" аргумент. У этого есть оболочка, прочитанная из файла без, разбора его имени файла, как если бы она была введена в командной строке.

+0

Наверное, лучше оставить «-c» и просто передать путь к файлу в качестве сценария для запуска. Например, файл может быть не исполняемым или может не начинаться с строки shebang ('#!'), И в этом случае это не является надлежащей командой для опции '-c'. –

+0

@KenThomases - хорошая точка. – CRD

+0

Спасибо большое! Это сработало! – eshin2020