在 swift 中终止进程

Kill process in swift

我正在尝试制作一个 Mac 应用程序,它将自动关闭 运行ning 上 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)

提前致谢!

我建议您先阅读 sysctlman 页——它用于获取和设置内核状态。这听起来像你想要的吗?

killall 的路径是 /usr/bin/killall,您可以从终端找到它:

> which killall
/usr/bin/killall

这是完整的 Swift 代码:

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)
}

我的 2 美分: 仅当您 Xcode 应用将 运行 禁用 SandoBox

时,您才能成功杀死“iTunes”

有关进程的堆栈溢出的所有示例都具有误导性,因为它们调用始终在系统文件夹中执行的“ls”或“echo”。