首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找启动NSRunningApplication的用户

查找启动NSRunningApplication的用户
EN

Stack Overflow用户
提问于 2014-01-11 18:58:11
回答 2查看 437关注 0票数 0

我怎样才能检索到这些信息?给定一个NSRunningApplication实例,我需要知道是谁启动了它。活动监视器显示此信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-11 19:40:29

如果您只需要启动NSRunningApplication实例的用户的名称,下面是一个应该这样做的分类方法:

代码语言:javascript
复制
#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
票数 2
EN

Stack Overflow用户

发布于 2014-01-11 19:20:15

从NSRunningApplication的文档中:只跟踪用户应用程序;这并不提供有关系统上每个进程的信息。

也就是说,它不会给您系统上的所有进程。

您能做的最接近的事情就是从NSWorkspace抓取NSWorkspace。但那将是一份不完整的名单。

或者,您可以深入到系统在Activity中使用的相同API。但那会很痛苦的。或者您可以从ps auxwww启动NSTask并解析输出,这也是痛苦的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21066524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档