zoukankan      html  css  js  c++  java
  • iOS获取系统进程

    添加头

    #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;
    }
  • 相关阅读:
    python进程和线程(五)
    java开发常用Linux命令
    IntelliJ IDEA中Maven插件无法更新索引之解决办法
    Spring事务配置的五种方式
    思考,快与慢(读书笔记)
    freemarker,jsp,velocity比较
    java学习之路经验总结
    iBATIS源码分析
    freemarker的使用心得
    javaScript中的关键字和保留字
  • 原文地址:https://www.cnblogs.com/qq378829867/p/2780977.html
Copyright © 2011-2022 走看看