我继承了Mac OS项目,并且需要重新启动浏览器(以及其他可能的其他应用程序/服务)。
这是我第一次使用桌面应用程序,以前的经验主要是移动领域。
我可以使用任何流程管理Swift API吗?或者我应该只使用system()
或execv()
之类的东西?
我认为,杀死并启动其他进程将需要提升的特权。我可以使用Swift中的API来处理密码提示吗?还是需要自己照顾一下?
答案 0 :(得分:2)
您可以使用NSWorkspace获取正在运行的应用程序。 AFAIK无法“重启”应用程序,但是您可以终止或强制终止,然后再次打开它。
要获取正在运行的应用程序:
NSWorkspace.shared.runningApplications
终止申请:
runningApp.terminate()
要强制终止应用程序:
runningApp.forceTerminate()
要打开正在运行的应用程序,您只需从正在运行的应用程序中获取捆绑包标识符,然后再次打开它
if let bundleIdentifier = runningApplications[index].bundleIdentifier {
runningApplications[index].forceTerminate()
NSWorkspace.shared.launchApplication(withBundleIdentifier: bundleIdentifier, options: .default, additionalEventParamDescriptor: nil, launchIdentifier: nil)
}