iOS 获取正在运行的进程

作者: IamOnelong | 来源:发表于2016-04-02 10:12 被阅读1206次

代码如下:

.h

@interfaceUIDevice (ProcessesAdditions)

- (NSArray*)runningProcesses;

@end

.m

#import"UIDevice+ProcessesAdditions.h"

#import

@implementationUIDevice (ProcessesAdditions)

- (NSArray*)runningProcesses {

intmib[4] = {CTL_KERN,KERN_PROC,KERN_PROC_ALL, 0};

intmiblen = 4;

size_tsize;

intst =sysctl(mib, miblen,NULL, &size,NULL, 0);

structkinfo_proc* process =NULL;

structkinfo_proc* newprocess =NULL;

do{

size += size / 10;

newprocess =realloc(process, size);

if(!newprocess){

if(process){

free(process);

}

returnnil;

}

process = newprocess;

st =sysctl(mib, miblen, process, &size,NULL, 0);

}while(st == -1 &&errno==ENOMEM);

if(st == 0){

if(size %sizeof(structkinfo_proc) == 0){

longnprocess = size/sizeof(structkinfo_proc);

if(nprocess){

NSMutableArray* array = [[NSMutableArrayalloc]init];

for(longi = nprocess - 1; i >= 0; i--){

NSString* processID = [[NSStringalloc]initWithFormat:@"%d", process[i].kp_proc.p_pid];

NSString* processName = [[NSStringalloc]initWithFormat:@"%s", process[i].kp_proc.p_comm];

NSDictionary* dict = [[NSDictionaryalloc]initWithObjects:[NSArrayarrayWithObjects:processID, processName,nil]

forKeys:[NSArrayarrayWithObjects:@"ProcessID",@"ProcessName",nil]];

[processIDrelease];

[processNamerelease];

[arrayaddObject:dict];

[dictrelease];

}

free(process);

return[arrayautorelease];

}

}

}

returnnil;

}

@end

如何使用呢?

NSArray* processes = [[UIDevicecurrentDevice]runningProcesses];

for(NSDictionary* dictinprocesses){

NSLog(@"%@ - %@", [dictobjectForKey:@"ProcessID"], [dictobjectForKey:@"ProcessName"]);

}

以上代码在iOS8一下可以使用,在iOS9上加强了安全,不允许调用sysctl获取进程了。但是我觉得没有关系的,并发妨碍你做这件事 在非越狱的iPhone 6 (iOS 8.1.3) 上进行钓鱼攻击 (盗取App Store密码),可通过检查系统版本完成钓鱼。

相关文章

  • iOS 获取正在运行的进程

    代码如下: .h @interfaceUIDevice (ProcessesAdditions)- (NSArra...

  • android获取正在运行的进程

    实体类 获取正在运行的进程列表

  • 多线程(1)-iOS进程与线程

    进程的定义: iOS系统中 进程是系统中正在运行的1个应用程序每个进程都是独立的,每个进程均运行在其专用且受保护...

  • iOS多线程——概念与原理

    1. 进程的定义 进程是指在系统中正在运行的一个应用程序,在iOS系统中,每个进程之间都是独立的,每个进程都运行在...

  • iOS多线程——概念与原理

    1. 进程的定义 进程是指在系统中正在运行的一个应用程序,在iOS系统中,每个进程之间都是独立的,每个进程都运行在...

  • 多线程(一)

    进程 进程通俗来说就是系统中正在运行的一个应用程序每个进程之间是独立的每个进程均运行在其专用的切受保护的内存ios...

  • iOS 进程间通信(APP间通信)

    进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内,iOS ...

  • iOS 多线程编程

    iOS 多线程 进程 与线程的区别 进程:资源分配的最小单位,进程中包含了某些资源的内存区域,一个正在运行的应用程...

  • iOS多线程 相关概念

    iOS多线程 相关概念 1. 进程:进程(process):是指在系统中正在独立运行的一个应用程序. 比如同时打开...

  • iOS多线程知识(一) - 基础知识

    iOS多线程知识(二)- NSThread 一.进程 进程是指在系统中正在运行的一个应用程序(eg:打开QQ会开启...

网友评论

  • 62737ae69891:ios9怎么做呢?
  • 郭苒:那ios10之后如何获取所有应用的进程信息呢,现在有办法吗???

本文标题:iOS 获取正在运行的进程

本文链接:https://www.haomeiwen.com/subject/bewylttx.html