以编程方式使用 swift 终止进程
Killing a process with swift programmatically
我正在尝试找到一种方法来识别和终止 Mac 应用程序中的特定进程。是否有内置 class 的函数可以 return 运行 进程列表? 运行 终端命令有一种使用 Process()
并执行 /usr/bin/killall
命令来终止进程的方法,但我需要以编程方式执行此操作,因为 运行 使用应用程序的终端命令不是一个好习惯。例如,删除文件也可以通过 运行 终端命令使用 Process()
来完成,而更好的方法是使用 FileManager.default.remomveItem()
.
如果您正在寻找一个应用程序(而不是一个过程),请参阅 NSWorkspace.shared.runningApplications
。您可以对这些元素调用 terminate()
或 forceTerminate()
。
如果你想要一个所有 BSD 进程的列表(例如,你会从调用 ps
中得到什么),那是用 sysctl (the code in the Q&A is in C; you'd have to wrap it to Swift, or rewrite it). I don't believe there's any Cocoa wrapper for that. To kill a process, once you have its PID, use signal
完成的,这就是 kill
Unix命令使用。通常您要发送 SIGTERM,这是正常关机。要强制终止进程,请发送 SIGKILL。
我正在尝试找到一种方法来识别和终止 Mac 应用程序中的特定进程。是否有内置 class 的函数可以 return 运行 进程列表? 运行 终端命令有一种使用 Process()
并执行 /usr/bin/killall
命令来终止进程的方法,但我需要以编程方式执行此操作,因为 运行 使用应用程序的终端命令不是一个好习惯。例如,删除文件也可以通过 运行 终端命令使用 Process()
来完成,而更好的方法是使用 FileManager.default.remomveItem()
.
如果您正在寻找一个应用程序(而不是一个过程),请参阅 NSWorkspace.shared.runningApplications
。您可以对这些元素调用 terminate()
或 forceTerminate()
。
如果你想要一个所有 BSD 进程的列表(例如,你会从调用 ps
中得到什么),那是用 sysctl (the code in the Q&A is in C; you'd have to wrap it to Swift, or rewrite it). I don't believe there's any Cocoa wrapper for that. To kill a process, once you have its PID, use signal
完成的,这就是 kill
Unix命令使用。通常您要发送 SIGTERM,这是正常关机。要强制终止进程,请发送 SIGKILL。