2017-08-15 177 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) 
}