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