在快速

时间:2017-08-15 21:27:02

标签: swift process macos-sierra launch

我正在尝试制作一个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)

提前致谢!

2 个答案:

答案 0 :(得分:1)

我建议您先阅读man的{​​{1}}页面 - 它用于获取和设置内核状态。这听起来像你想要的吗?

sysctl的路径为killall,您可以在终端找到:

/usr/bin/killall

这里是完整的Swift代码:

> which killall
/usr/bin/killall

答案 1 :(得分:0)

我的2美分: 仅当您的Xcode App将与SandoBox DISABLED enter image description here一起运行时,您才能成功杀死“ iTunes” {p>

所有关于Process的堆栈溢出示例都令人误解,因为它们总是在系统文件夹中执行广告“ ls”或“ echo”。