2013-07-31 16 views
17

Szukałem wielu dni na to, widziałem wiele przykładów tego, ale nie mogę zrozumieć, jak działa NSTask, załóżmy, że chciałem wykonać komendę killall Dock lub defaults write com.apple.Finder AppleShowAllFiles YES coś takiego, jak miałbym to zrobić.Wykonywanie komend powłoki za pomocą NSTask - Objective-C Cocoa

Wiem, jak wykonać zewnętrzny skrypt powłoki (sh), ale trzeba być bardziej wyrafinowanym i używać zamiast niego NSTask.

Dzięki za pomoc !!

Odpowiedz

25

Można zrobić coś takiego:

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

Dokładnie to ścieżka launch i argumenty podasz są dyktowane przez polecenie, które chcesz uruchomić i jego parametrów.

+0

Dzięki za odpowiedź !, jak dowiem się, jaka ścieżka uruchamiania jest mi potrzebna w przypadku różnych poleceń? – Ryan

+1

Mój przykład oszukuje i uruchamia powłokę, ponieważ często łatwiej jest dostarczyć polecenia i parametry w ten sposób. Możesz także przekazać ścieżkę do wykonywanego przez siebie Hyatt, który chcesz uruchomić. – Wain

+0

Dziękuję bardzo, bardzo mi pomogłeś! – Ryan

Powiązane problemy