如何获得在iOS中运行的活动进程
CPU使用率在这里检索:iOS - Get CPU usage from application
RAM的使用似乎在这里解决:Available memory for iPhone OS app
编辑:
像埃里克斯已经指出了意见,似乎有一种方式来获得后台任务:Can we retrieve the applications currently running in iPhone and iPad和How to get information about free memory and running processes in an App Store approved app? (Yes, there is one!)
代码自我介绍:)
#import <mach/mach.h>
#import <mach/mach_host.h>
#import <sys/sysctl.h>
- (NSArray *)runningProcesses {
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};
size_t miblen = 4;
size_t size;
int st = sysctl(mib, miblen, NULL, &size, NULL, 0);
struct kinfo_proc * process = NULL;
struct kinfo_proc * newprocess = NULL;
do {
size += size/10;
newprocess = realloc(process, size);
if (!newprocess){
if (process){
free(process);
}
return nil;
}
process = newprocess;
st = sysctl(mib, miblen, process, &size, NULL, 0);
} while (st == -1 && errno == ENOMEM);
if (st == 0){
if (size % sizeof(struct kinfo_proc) == 0){
int nprocess = size/sizeof(struct kinfo_proc);
if (nprocess){
NSMutableArray * array = [[NSMutableArray alloc] init];
for (int i = nprocess - 1; i >= 0; i--){
NSString * processID = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_pid];
NSString * processName = [[NSString alloc] initWithFormat:@"%s", process[i].kp_proc.p_comm];
NSDictionary * dict = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:processID, processName, nil]
forKeys:[NSArray arrayWithObjects:@"ProcessID", @"ProcessName", nil]];
[array addObject:dict];
}
free(process);
return array;
}
}
}
return nil;
}
sysctl不再适用于iOS9 – tounaobun 2015-08-27 04:01:32
sysctl在iOS9中始终返回0。 – 2016-07-14 12:42:18
使用sysctl。请参阅http://stackoverflow.com/questions/4312613/can-we-retrieve-the-applications-currently-running-in-iphone-and-ipad – EricS 2012-02-18 21:49:19