/// 获得进程的信息
+ (BOOL)processInfoWithPID:(int)pid proInfo:(struct kinfo_proc*)procInfo
{
int cmd[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid};
size_t size = sizeof(*procInfo);
return sysctl(cmd, sizeof(cmd)/sizeof(*cmd), procInfo, &size, NULL, 0) == 0;
}
//获得进程开始的时间 (iOS App启动开始的时间)
+ (NSTimeInterval)processStartTime
{
struct kinfo_proc kinfo;
if ([self processInfoWithPID:[[NSProcessInfo processInfo] processIdentifier] proInfo:&kinfo]) {
return kinfo.kp_proc.p_un.__p_starttime.tv_sec * 1000.0 + kinfo.kp_proc.p_un.__p_starttime.tv_usec / 1000.0;
} else {
NSAssert(NO, @"无法取得进程的信息");
return 0;
}
}