如何以编程方式获取在iOS的后台,CPU和RAM使用情况下运行的活动进程?如何获得在iOS中运行的活动进程
4
A
回答
3
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!)
4
代码自我介绍:)
#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;
}
+4
sysctl不再适用于iOS9 – tounaobun 2015-08-27 04:01:32
+0
sysctl在iOS9中始终返回0。 – 2016-07-14 12:42:18
相关问题
- 1. 如何获得所有正在运行的进程中的Qt
- 2. 如何获取配置为在不同进程中运行的活动的pid?
- 3. 如何在java中运行进程时获得processid?
- 4. 如何获得正在运行的进程的mach-o uuid?
- 5. 运行PHP进程的当前活动
- 6. 如何获得(运行/暂停)后台进程状态,无需越狱的IOS
- 7. 如何获得在进程中运行的所有线程的堆栈跟踪?
- 8. 如何得到哪些活动在Android中的应用程序中运行
- 9. 如何获得活动线程数?
- 10. 如何使进程B只在进程A处于活动状态时运行
- 11. 如何在正在运行的活动中显示活动?
- 12. 如何在Android进程中获取正在运行的线程?
- 13. 如何在后台线程中运行进程iOS
- 14. 在iOS中运行子进程?
- 15. 我如何获得活动?
- 16. 我如何获得运行CAP_NET_ADMIN功能的Android进程
- 17. 如何在Android中进行活动
- 18. 如何在Windows中获取每个进程的磁盘活动
- 19. 获取正在运行的进程列表,获取活动进程(和它的应用程序)的Flex/AIR
- 20. 如何在活动组中获得儿童活动?
- 21. 如何获得传递给正在运行的进程的命令行参数?
- 22. 如何使用Robotium从其他进程运行活动
- 23. 如何在垃圾收集过程中获得进度条的运行?
- 24. 如何获得与系统运行进程的PID()在C++中命令
- 25. 如何在windows mobile中获得进程
- 26. 如何在java中获得进程ID?
- 27. 从哪里获得我目前正在进行的活动?
- 28. 如何杀死在新活动中运行的线程
- 29. 如何在e4 rcp应用程序中获得活动窗口?
- 30. 我如何获得在一个进程下运行的子线程总数?
使用sysctl。请参阅http://stackoverflow.com/questions/4312613/can-we-retrieve-the-applications-currently-running-in-iphone-and-ipad – EricS 2012-02-18 21:49:19