我怎样才能检索到这些信息?给定一个NSRunningApplication实例,我需要知道是谁启动了它。活动监视器显示此信息。
发布于 2014-01-11 19:40:29
如果您只需要启动NSRunningApplication实例的用户的名称,下面是一个应该这样做的分类方法:
#import <libproc.h>
#import <pwd.h>
@implementation NSRunningApplication (UserName)
- (NSString *)foo_userName {
pid_t pid = [self processIdentifier];
struct proc_bsdshortinfo info;
proc_pidinfo(pid, PROC_PIDT_SHORTBSDINFO, 0, &info, sizeof(info));
struct passwd *passwd = getpwuid(info.pbsi_uid);
return [NSString stringWithUTF8String:passwd->pw_name];
}
@end发布于 2014-01-11 19:20:15
从NSRunningApplication的文档中:只跟踪用户应用程序;这并不提供有关系统上每个进程的信息。
也就是说,它不会给您系统上的所有进程。
您能做的最接近的事情就是从NSWorkspace抓取NSWorkspace。但那将是一份不完整的名单。
或者,您可以深入到系统在Activity中使用的相同API。但那会很痛苦的。或者您可以从ps auxwww启动NSTask并解析输出,这也是痛苦的。
https://stackoverflow.com/questions/21066524
复制相似问题