我正在尝试找到一种方法来识别和终止 Mac 应用程序中的特定进程。是否有一个内置类具有可以返回正在运行的进程列表的函数?有一种方法可以使用 Process() 运行终端命令并执行/usr/bin/killall 命令来终止进程,但我需要像运行终端命令一样以编程方式执行此操作使用应用程序并不是一个好的做法。例如,删除文件也可以通过使用 Process()
运行终端命令来完成,而更好的方法是使用 FileManager.default.remomveItem()
。
最佳答案
如果您正在寻找应用程序(而不是进程),请参阅NSWorkspace.shared.runningApplications
。您可以对这些元素调用 terminate()
或 forceTerminate()
。
如果您想要所有 BSD 进程的列表(例如,您可以通过调用 ps
获得),可以使用 sysctl 来完成。 (问答中的代码是用 C 编写的;您必须将其包装到 Swift 中,或者重写它)。我不相信有任何 cocoa wrapper 可以做到这一点。要终止进程,一旦获得其 PID,请使用 signal
,这是 kill
Unix 命令所使用的。通常您需要发送 SIGTERM,这是正常关闭。要强制终止进程,请发送 SIGKILL。
关于swift - 以编程方式快速终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66919520/