Выполнение команд оболочки с помощью NSTask — Objective-C Cocoa

Я искал дни и часы для этого, я видел много примеров этого, но не могу понять, как работает NSTask, допустим, я хотел выполнить команду killall Dock или defaults write com.apple.Finder AppleShowAllFiles YES что-то в этом роде , как бы я это сделал.

Я знаю, как выполнить сценарий внешней оболочки (sh), но мне нужно быть более изощренным и вместо этого использовать NSTask.

Спасибо за любую помощь!!


person Rstew    schedule 31.07.2013    source источник


Ответы (1)


Вы можете сделать что-то вроде:

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/bash"];
[task setArguments:@[ @"-c", @"/usr/bin/killall Dock" ]];
[task launch];

Именно то, какой путь запуска и аргументы вы предоставляете, определяется командой, которую вы хотите запустить, и ее параметрами.

person Wain    schedule 31.07.2013
comment
Спасибо за ответ!, как мне узнать, какой путь запуска мне нужен для разных команд? - person Rstew; 31.07.2013
comment
Мой пример обманывает и запускает оболочку, потому что часто проще предоставить команду и параметры таким образом. Вы также можете указать путь к исполняемому файлу Unix Hyatt, который хотите запустить. - person Wain; 31.07.2013
comment
Большое спасибо, вы мне очень помогли! - person Rstew; 31.07.2013