【问题标题】:Killing a process with swift programmatically以编程方式快速杀死进程
【发布时间】:2021-04-02 12:43:32
【问题描述】:
我正在尝试找到一种方法来识别和终止 Mac 应用程序中的特定进程。是否有一个内置类具有可以返回正在运行的进程列表的功能?有一种方法可以使用Process() 运行终端命令并执行/usr/bin/killall 命令来终止进程,但我需要以编程方式执行此操作,因为使用应用程序运行终端命令不是一个好习惯。例如,删除文件也可以通过使用Process() 运行终端命令来完成,而更好的方法是使用FileManager.default.remomveItem()。
【问题讨论】:
标签:
swift
process
kill-process
【解决方案1】:
如果您正在寻找应用程序(而不是进程),请参阅NSWorkspace.shared.runningApplications。您可以在这些元素上调用 terminate() 或 forceTerminate()。
如果你想要一个所有 BSD 进程的列表(例如,你会从调用 ps 得到什么),那是用 sysctl 完成的(Q&A 中的代码是 C;你必须换行Swift,或者重写它)。我不相信有任何可可包装器。要杀死一个进程,一旦你有了它的 PID,就使用signal,这是kill Unix 命令使用的。通常你想发送 SIGTERM,这是一个正常的关机。要强制终止进程,请发送 SIGKILL。