以编程方式快速终止进程

问题描述 投票:0回答:2

我正在尝试找到一种方法来识别和终止 Mac 应用程序中的特定进程。是否有一个内置类具有可以返回正在运行的进程列表的函数?有一种方法可以使用

Process()
运行终端命令并执行
/usr/bin/killall
命令来终止进程,但我需要以编程方式执行此操作,因为使用应用程序运行终端命令不是一个好的做法。例如,删除文件也可以通过使用
Process()
运行终端命令来完成,而更好的方法是使用
FileManager.default.remomveItem()

swift process kill-process
2个回答
3
投票

如果您正在寻找应用程序(而不是流程),请参阅

NSWorkspace.shared.runningApplications
。您可以对这些元素调用
terminate()
forceTerminate()

如果您想要所有 BSD 进程的列表(例如,您可以通过调用

ps
获得什么),可以使用 sysctl 完成(问答中的代码是 C 语言;您必须将其包装为Swift,或者重写它)。我不相信有任何可可包装纸可以做到这一点。要终止进程,一旦获得其 PID,请使用
signal
,这就是
kill
Unix 命令所使用的。通常您需要发送 SIGTERM,这是正常关闭。要强制终止进程,请发送 SIGKILL。


0
投票

如果你有进程的pid,你可以简单地调用kill(::)函数:

kill(pid, SIGTERM)
© www.soinside.com 2019 - 2024. All rights reserved.