2013-07-31 4 views
17

मैं दिन और इस के लिए घंटे के लिए खोज की है, मैं इस के उदाहरण के एक बहुत देखा है, लेकिन समझ नहीं कैसे NSTask काम करता है, मान लीजिए कि मैं निष्पादित करने के लिए चाहता था चलो कमांड killall Dock या defaults write com.apple.Finder AppleShowAllFiles YES ऐसा कुछ, मैं इसे करने के बारे में कैसे जाऊंगा।निष्पादित खोल NSTask साथ आदेश - ऑब्जेक्टिव-सी कोको

मुझे पता है कि बाहरी खोल स्क्रिप्ट (sh) को निष्पादित करने के लिए, लेकिन अधिक परिष्कृत होने और इसके बजाय NSTask का उपयोग करने की आवश्यकता है।

किसी भी मदद के लिए धन्यवाद !!

उत्तर

25

आप की तरह कुछ कर सकता है:

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

वास्तव में क्या प्रक्षेपण पथ और तर्क उपलब्ध कराने आदेश और उसके मानदंड आप चलाना चाहते हैं से तय कर रहे हैं।

+0

उत्तर के लिए धन्यवाद !, मुझे कैसे पता चलेगा कि मुझे विभिन्न आदेशों के लिए किस लॉन्च पथ की आवश्यकता है? – Ryan

+1

मेरा उदाहरण धोखा देती है और एक खोल चलाती है क्योंकि इस तरह कमांड और पैरामीटर को आपूर्ति करना अक्सर आसान होता है। आप यूनिक्स निष्पादन योग्य हयात के पथ को भी पास कर सकते हैं जिसे आप चलाना चाहते हैं। – Wain

+0

बहुत बहुत धन्यवाद, आपने मुझे बहुत मदद की! – Ryan

संबंधित मुद्दे