`
siruoxian
  • 浏览: 231106 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

IOS 获取当前系统运行进程

阅读更多

+ (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] initWithUTF8String: 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];

            }

        }

    }

    

    returnnil;

 

}

分享到:
评论

相关推荐

    【PerfDog性能狗 v5.1.210204】移动全平台性能测试分析专家+APP应用游戏性能测试

    iOS平台,APP多进程分为APP Extension和系统XPC Server。 比如:某电竞直播软件用到APP Extension扩展进程(扩展进程名LABroadcastUpload)。当然也可能用到系统XPC Server服务进程,如一般web浏览器会用到webkit。 ...

    计算机视频作业.docx

    程序 作业五2.2.1程序管理 1、进程已经获得了除CPU之外的所有资源并作好了运行准备时的状态是________。 A.就绪状态 B.执行状态 C.挂起状态 D.唤醒状态 2、关于多道程序系统的说法,正确的是________。 A.多个...

    计算机视频作业(1).docx

    程序 作业五2.2.1程序管理 1、进程已经获得了除CPU之外的所有资源并作好了运行准备时的状态是________。 A.就绪状态 B.执行状态 C.挂起状态 D.唤醒状态 2、关于多道程序系统的说法,正确的是________。 A.多个...

    chrome.exe

    另有手机版的Chrome浏览器,于2012年发布了Chrome浏览器移动版,提供IOS系统、安卓系统以及Windows Phone系统的Chrome浏览器,在保持浏览器原有特点的情况下,实现了多终端使用浏览器,具有共享收藏历史信息等功能,...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    JAVA上百实例源码以及开源项目源代码

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    Android项目源码开源的 Material Design 豆瓣客户端.zip

    此外,由于采用了 RecyclerView,通过在运行时判断当前设备配置,可以动态给界面设置为 1、2、3 列视图,充分利用屏幕空间。 启动速度 Android 默认在冷启动应用进程至能够调用 Activity.onCreate() 前会加载应用...

    CISCO 技术大集合

    首先你可以看到各端口当前的状况: First, would you like to see the current interface summary? [yes]: Any interface listed with OK? value "NO" does not have a valid configuration Interface IP-Address...

    java开源包1

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包11

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包2

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包3

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包6

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包5

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包10

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包4

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

Global site tag (gtag.js) - Google Analytics