【发布时间】:2011-01-07 06:13:17
【问题描述】:
如果 Cocoa 应用程序需要终止另一个进程(它没有产生),在 10.5 OS X 上可以使用哪些 API 来执行此操作?请注意,要终止的进程的进程 ID 在 Cocoa 应用程序中是未知的。需要终止的进程也是Cocoa进程。
【问题讨论】:
-
如果进程ID未知,进程名称是否已知?
标签: cocoa
如果 Cocoa 应用程序需要终止另一个进程(它没有产生),在 10.5 OS X 上可以使用哪些 API 来执行此操作?请注意,要终止的进程的进程 ID 在 Cocoa 应用程序中是未知的。需要终止的进程也是Cocoa进程。
【问题讨论】:
标签: cocoa
使用 NSWorkspace 或 Process Manager 查找进程并获取其 PID,然后像往常一样使用kill。
【讨论】:
Iirc,NSWorkspace 只会返回用户自己拥有的进程,但是,当然有很多不同的方法来处理这个问题:
NSRunningApplication* app = [NSRunningApplication runningApplicationWithProcessIdentifier:pid];
[app terminate]; // ask the target to terminate self
[app forceTerminate]; // the target will not save the data
【讨论】:
您必须在杀死它之前检索进程 ID。要杀死一个进程,只需向它发送信号 SIGABT、SIGTERM 或 SIGKILL。
【讨论】: