Gelişmekte olduğum bir Mac uygulamasında bir terminal komutu çalıştırmaya çalışıyorum. Terminal komut:Bir Mac uygulamasında, bir Mac uygulamasında Swift Xcode ile Çalıştır
sudo sysctl -w net.inet.tcp.delayed_ack=0
Ben NSTask kullanarak denedi ama her zaman yanlış bir şey yapıyorum gibi görünüyor.
Sadece bu komutu çalıştırmak ve çıktıyı yazdırmak istiyorum. İlginiz için teşekkür ederiz.
PS. İşte benim geçerli kod (yanıtların sayesinde) neye benzediği:
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
ben çıktıda aşağıdaki iletiyi alırsınız:
net.inet.tcp.delayed_ack: 3
sysctl: net.inet. tcp.delayed_ack = 0: Kullanıma izin verilmiyor
Ne denediğinizi göstermediniz, ancak bir kullanıcı için bir NSTask olarak adlandırılamayacağınızı varsayalım, çünkü bir kullanıcıyı yetkilendirmek için çok özel şeyler yapar (olası açılır iletişim kutuları dahil). Http://stackoverflow.com/questions/4050687/how-to-use-nstask-as-root adresini karşılaştırın. Cevabınız için –
teşekkürler. Ayrıca mevcut kodumu soruya ekledim. – MRF
Dediğim gibi, muhtemelen yaklaşımınızla ilgili genel sorunlar var. Bağlantılı iş parçacığına bir göz atın. –