使用Swift执行'killall'时不允许进行操作
我正在尝试创建一个菜单栏应用程序,以隐藏桌面图标以及希望进行其他各种操作,主要是为了更多地了解Swift,并且由于某种原因,我无法使其正常工作。当我运行该程序并单击菜单项之一时,什么也没有发生,并且我在控制台中收到此警告:
killall: warning: kill -TERM 15175: Operation not permitted
其他命令也可以,但是我尝试使用“ killall”的任何变体都会吐出类似上面的内容。目前,我的代码如下所示:
@discardableResultfunc killStuff(_ args: String...) -> Int32 {
let task = Process()
let pipe = Pipe()
task.launchPath = "/usr/bin/killall"
task.arguments = args
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)
}
return task.terminationStatus
}
我已经和Google上找到的可接受的解决方案进行了多种尝试,但是我不断收到相同的“不允许操作”的信息。当我在Xcode游乐场中运行相同的代码时,它工作正常。
提前致谢!
回答:
Mac应用程序(如iOS应用程序)在默认情况下处于沙箱状态,这意味着它们对系统资源的访问非常有限。例如,仅允许它们读取和写入少量沙盒目录,并且usr/bin
绝对不允许读取/写入/执行,也不允许您启动进程。
我记得,通过删除您的权利文件,您正在构建未沙盒化的应用程序。您可以从Xcode运行它,但是需要更改系统设置才能从查找程序运行它。
以上是 使用Swift执行'killall'时不允许进行操作 的全部内容, 来源链接: utcz.com/qa/408430.html