您的位置:首页 > 移动开发 > IOS开发

获取iOS设备上所有的进程名字,以及进程的ID,

2016-07-21 11:27 615 查看
目前这段代码能获取iOS设备上所有的进程名字,以及进程的ID,

#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]];

[processID release];

[processName release];

[array addObject:dict];

[dict release];

}

free(process);

return [array autorelease];

}

}

}

 

return nil;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: