在 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)
提前致谢!
我建议您先阅读 sysctl
的 man
页——它用于获取和设置内核状态。这听起来像你想要的吗?
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”。
我正在尝试制作一个 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)
提前致谢!
我建议您先阅读 sysctl
的 man
页——它用于获取和设置内核状态。这听起来像你想要的吗?
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
有关进程的堆栈溢出的所有示例都具有误导性,因为它们调用始终在系统文件夹中执行的“ls”或“echo”。