如何检索此信息?给定一个NSRunningApplication
实例,我需要知道是谁启动了它。活动监视器显示此信息。
问问题
413 次
2 回答
2
如果您只需要启动 的实例的用户的名称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-11T19:40:29.170 回答
1
来自 NSRunningApplication 的文档: 仅跟踪用户应用程序;这并不提供有关系统上每个进程的信息。
即它不会为您提供系统上的所有进程。
你能做的最接近的是runningApplications
从NSWorkspace
. 但这将是一个不完整的列表。
或者,您可以深入了解系统在 Activity Monitor 中使用的相同 API。但这会很痛苦。或者你可以ps auxwww
从 NSTask 启动并解析输出,这也很痛苦。
于 2014-01-11T19:20:15.207 回答