微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

进程未终止 macOS 应用程序/终止正在运行的进程

如何解决进程未终止 macOS 应用程序/终止正在运行的进程

我正在使用 getRunningPrcoess() 函数获取所有正在运行的进程。但是当我尝试终止某个特定进程时,终止功能不起作用,它不会终止该进程。请告诉我我的代码有什么问题。我正在使用 killProcess(_ processId: Int) 函数并在参数中传递进程 ID 以终止进程。有没有其他方法可以从您的应用程序中终止正在运行的进程?

//MARK:- Variables
var arrApplication: [NSRunningApplication]!

//MARK:- Load
override func viewDidLoad() {
    super.viewDidLoad()
    // Do view setup here.
    tblRunningProcess.delegate = self
    tblRunningProcess.dataSource = self
    getRunningPrcoess()
}

//MARK:- Actions
@IBAction func btnEndTaskAction(_ sender: NSButton) {
    arrApplication[sender.tag].forceTerminate()
    getRunningPrcoess()
}

//MARK:- Functions
func getRunningPrcoess() {
    // Get all running applications
    let workspace = NSWorkspace.shared
    arrApplication = workspace.runningApplications
    tblRunningProcess.reloadData()
}

func numberOfRows(in tableView: NSTableView) -> Int {
    return arrApplication == nil ? 0 : arrApplication.count
}
func tableView(_ tableView: NSTableView,viewFor tableColumn: NSTableColumn?,row: Int) -> NSView? {
    guard let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "RunningProcesstCell"),owner: self) as? RunningProcesstCell else { return nil }
    cell.lblProcessName.stringValue = "Name: \(arrApplication[row].localizedname ?? "N/A")"
    cell.lblProcessId.stringValue = "ID: \(arrApplication[row].bundleIdentifier ?? "N/A")"
    cell.imgIcon.image = arrApplication[row].icon
    cell.btnEndTask.tag = row
    return cell
}

解决方法

我认为您正在初始化一个新进程而不是杀死现有进程。 .init() 创建一个具有相同标识符的新进程,然后它被杀死。所以你需要在这里改变你的方法。

更新: 正确的解决方案是在项目设置的功能部分关闭沙箱模式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。