2017-08-15 194 views
0

我試圖製作一個Mac應用程序,它將自動關閉在OS上運行的代碼指定應用程序。我正在嘗試使用killall(如在終端中)。每當我嘗試運行該程序時,我都會得到「sysctl:unknown oid'killall'」。快速殺死進程

這裏是我的代碼:

let task = Process() 
    task.launchPath = "/usr/sbin/sysctl" 
    ///usr/sbin/sysctl 
    task.arguments = ["killall","iTunes"] 
    let pipe = Pipe() 
    task.standardOutput = pipe 
    task.standardError = pipe 
    task.launch() 
    task.waitUntilExit() 
    let data = pipe.fileHandleForReading.readDataToEndOfFile() 
    let output: String = NSString(data: data, encoding: String.Encoding.utf8.rawValue) as! String 
    print(output) 

提前感謝!

+0

你錯過了一個正斜槓。不應該是'/ usr/sbin/sysctl'嗎? –

+0

你是對的。但是當我現在運行它時,它指出「sysctl:unknown oid'killall」。我已經更新了這個新的錯誤。 –

+0

@CodeDifferent爲了使用killall,我需要什麼sbin文件? –

回答

1

我建議你先閱讀man頁面sysctl - 它用於獲取和設置內核狀態。這聽起來像是你想要的東西嗎?

killall的路徑是/usr/bin/killall,您可以從終端發現:

> which killall 
/usr/bin/killall 

下面是完整的銀行代碼:

let pipe = Pipe() 

let task = Process() 
task.launchPath = "/usr/bin/killall" 
task.arguments = ["iTunes"] 
task.standardOutput = pipe 
task.standardError = pipe 
task.launch() 
task.waitUntilExit() 

let data = pipe.fileHandleForReading.readDataToEndOfFile() 
if let output = String(data: data, encoding: .utf8) { 
    print(output) 
}