如何获取流程ID?我需要ID以杀死该进程。我知道这个过程的名称。
谢谢!
答案 0 :(得分:4)
最好的方法是使用-[NSWorkspace launchedApplications]用于10.5和 - [NSWorkspace runningApplicattions]用于10.6多个应用。一个返回带有指定键的字典,包括进程ID和包名称和位置信息(如果可用),另一个返回NSRunningApplication对象。
答案 1 :(得分:2)
首先,进程名称不能唯一标识进程。可能有许多具有相同名称的进程,或者进程甚至可以在您看到它们时更改其名称(即PostgreSQL服务器正在分叉和更改argv [0],因此您可以看到谁是主人,谁在工作进程等)。但无论如何,您需要一个API来列出流程并获取他们的详细信息 - procps将为您完成。
更新:哦,我第一次没注意到OSX。对于OS X,您必须使用NetBSD API(不要问)。请参阅KVM (Kernel Data Access Library)文档。 API不同,这个想法仍然是一样的。
答案 2 :(得分:2)
let pid: Int32 = ProcessInfo.processInfo.processIdentifier
print("pid: \(pid)")
答案 3 :(得分:1)
快速破解:向killall发出一个shell调用,它会按名称杀死进程。
答案 4 :(得分:1)
使用NSRunningApplication
NSArray *runningApplications = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.bundleIdentifier"];
if (runningApplications.count == 1) {
NSRunningApplication *app = runningApplications[0];
pid = [app processIdentifier];
}
注意:-[NSWorkspace launchedApplications]
已弃用10.6及以上。