以编程方式快速终止进程

问题描述

我试图找到一种方法来识别和终止 Mac 应用程序中的特定进程。是否有一个内置类具有可以返回正在运行的进程列表的函数?有一种使用 Process() 运行终端命令并执行 /usr/bin/killall 命令来终止进程的方法,但我需要以编程方式执行此操作,因为使用应用程序运行终端命令不是一个好习惯。例如,删除文件也可以通过使用 Process() 运行终端命令来完成,而更好的方法是使用 FileManager.default.remomveItem()

解决方法

如果您要查找应用程序(而不是进程),请参阅NSWorkspace.shared.runningApplications。您可以对这些元素调用 terminate()forceTerminate()

如果你想要一个所有 BSD 进程的列表(例如你会从对 ps 的调用中得到什么),那就是用 sysctl 完成的(问答中的代码是 C 的;你' d 必须将它包装到 Swift,或重写它)。我不相信有任何可可包装。要终止进程,一旦获得其 PID,请使用 signal,这是 kill Unix 命令使用的。通常你想发送 SIGTERM,这是一个正常的关闭。要强制终止进程,请发送 SIGKILL。