के साथ मैक ऐप में एक टर्मिनल कमांड चलाएं मैं एक मैक ऐप में टर्मिनल कमांड चलाने की कोशिश कर रहा हूं जिसे मैं विकसित कर रहा हूं। टर्मिनल कमांड है:स्विफ्ट एक्सकोड
sudo sysctl -w net.inet.tcp.delayed_ack=0
मैंने एनएसटीस्क का उपयोग करने का प्रयास किया है लेकिन ऐसा लगता है कि मैं हर बार कुछ गलत कर रहा हूं।
मैं सिर्फ यह आदेश चलाने और आउटपुट मुद्रित करना चाहता हूं। आपके ध्यान के लिए धन्यवाद।
पीएस। यहाँ मेरे वर्तमान कोड (अपने उत्तर के लिए धन्यवाद) ऐसा दिखाई देता है:
let task = NSTask()
task.launchPath = "/usr/sbin/sysctl"
task.arguments = ["-w", "net.inet.tcp.delayed_ack=0"]
let pipe = NSPipe()
task.standardOutput = pipe
task.standardError = pipe
task.launch()
task.waitUntilExit()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output: String = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
मैं उत्पादन में निम्नलिखित संदेश प्राप्त होता है:
net.inet.tcp.delayed_ack: 3
sysctl: net.inet। tcp.delayed_ack = 0: ऑपरेशन की अनुमति नहीं है
आपने जो कुछ भी नहीं किया है, उसे आपने नहीं दिखाया है, लेकिन मुझे लगता है कि आप बस सूडो को एनएसटीस्क के रूप में नहीं बुला सकते हैं, क्योंकि यह उपयोगकर्ता को अधिकृत करने के लिए बहुत ही खास चीजें करता है (संभावित पॉप-अप संवाद सहित)। Http://stackoverflow.com/questions/4050687/how-to-use-nstask-as-root की तुलना करें। –
आपके उत्तर के लिए धन्यवाद। मैंने प्रश्न में अपना वर्तमान कोड भी जोड़ा। – MRF
जैसा कि मैंने कहा, आपके दृष्टिकोण के साथ सबसे अधिक सामान्य समस्याएं हैं। जुड़े हुए धागे पर एक नज़र डालें। आपके विस्तृत उत्तर के लिए –