swift - 以编程方式快速终止进程

标签 swift process kill-process

我正在尝试找到一种方法来识别和终止 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/

相关文章:

swift - 如何在 Swift 中将 "append"设置为不可变字典?

ios - 如何在 Swift 中设置新的类文件

unix - 如何等待三个子进程?

c - 访问 C linux 中 fork 之前创建的子进程中的字符串数组

linux - kill -9 是终止进程的最后手段。什么是第一手段?

ios - 使用Combine Publishers的401重试机制

swift - 无法将调用结果类型 "Bool"转换为预期类型 int?

python - 跟踪根进程产生的所有子进程

node.js - 在 NodeJs 中杀死由 spawn 触发的 FFmpeg 进程

android - 有没有办法模拟在我的应用程序被 Android 杀死后返回到我的应用程序?