`
siruoxian
  • 浏览: 237798 次
  • 性别: 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;

 

}

分享到:
评论

相关推荐

    ios 系统当前可用内存

    标题“ios系统当前可用内存”以及描述中的“1.ios系统当前内存显示”和“2.label显示当前内存”都指向了一个核心概念:如何查看并理解iOS设备上的内存使用情况。本文将深入探讨iOS系统的内存结构、如何监控内存以及...

    RunningApp-iOS:获得设备当前运行的程序

    在iOS开发中,获取设备当前运行的程序是一个相对复杂的过程,因为Apple的封闭系统设计对这类操作有所限制,以保护用户隐私。然而,通过使用Objective-C编程语言,开发者可以访问某些系统API来获取一些相关信息。以下...

    iOS操作系统Unix常用命令

    iOS操作系统基于Unix内核,因此在iOS设备上可以使用许多Unix命令来管理系统。以下是一些常见的Unix命令及其用途: 1. **账号与密码管理**: - `root`:这是Unix系统的超级用户,通常初始密码是`alpine`。 - `...

    IOS应用源码Demo-获取当前硬件可用内存的例子UIDevice-毕设学习.zip

    这个压缩包"IOS应用源码Demo-获取当前硬件可用内存的例子UIDevice-毕设学习.zip"提供了一个实例,教你如何利用`UIDevice`类来获取设备的可用内存信息,这对于进行性能优化和调试非常有用。下面将详细介绍这一知识点...

    ios应用源码之获取当前硬件可用内存的例子uidevice 20181210

    在这段代码中,我们首先获取了`NSProcessInfo`(Swift中的`ProcessInfo`)实例,它包含了有关当前进程的信息。然后,我们通过`physicalMemory`属性获取到内存总量,以及`activeMemoryUsage`属性获取到当前活跃内存...

    sanjincheng_三进程_qt界面_linux编程_

    在本文中,我们将深入探讨如何使用Qt库在Linux环境下创建一个具有图形用户界面(GUI)的应用程序,该程序能够同时运行三个独立的进程:显示实时时间、循环输出数字0到9,以及执行一个从1累加到1000的计数器。...

    swift-iOS版微信小助手(防撤回修改微信运动群管理好友请求管理)

    Swift中的NSProcessInfo类可以帮助我们获取当前运行的进程信息,而注入代码到其他应用则涉及到了动态库注入技术,这在iOS开发中是一项挑战,需要深入理解iOS沙盒机制和进程间通信。 二、修改微信运动步数 微信运动...

    正在运行的app

    对于iOS系统,查看运行app的途径相对有限,因为苹果为了保护用户体验,限制了用户对后台进程的直接访问。但用户可以通过以下方式了解: 1. **切换应用**:双击Home键(iPhone X及以上型号是通过底部向上滑动)可以...

    iOS面试题

    ### iOS面试题详解 #### 1. UIView与CALayer的区别 - **定义与层次:**UIView和CALayer作为iOS开发中极为重要的两类视图层组件,它们分别处于不同的抽象层次。UIView是UIKit框架中用于构建界面的核心类,而CALayer...

    【计算机软件毕业设计】基于IOS系统的娱乐资讯网的开发与实现(完整版).doc

    测试与调试阶段,会对系统进行全面的功能测试和性能测试,确保系统稳定运行,无明显bug。 5 系统优化与未来改进 系统上线后,将持续收集用户反馈,对功能进行优化,可能的改进方向包括提升加载速度、增强个性化...

    获取设备内存大小和剩余内存大小

    iOS提供了`NSProcessInfo`类,它是`ProcessInfoPlistKey`的子类,用于获取当前进程的信息。虽然它不能直接给出剩余内存的数值,但可以通过监听`didReceiveMemoryWarning`通知来监控内存警告。当系统内存不足时,会...

    IOS 网络多线程详解

    - 进程(Process):每个应用程序运行时都会有一个独立的进程,每个进程有自己的内存空间。通常一个应用程序只有一个进程,但在某些情况下也可以拥有多个进程。 - 线程(Thread):线程是进程中的最小可调度单元,...

    模拟进程调度之优先数高者优先

    进程调度是指操作系统内核根据一定的策略选择就绪队列中的一个进程,并将其分配给CPU运行。在多任务系统中,多个进程可能会同时处于就绪状态,等待CPU资源。优先数高者优先(Priority Scheduling)算法是一种常见的...

    iOS 5 Programming中文版第十二章

    3. **后台任务请求**:iOS允许应用在后台执行某些任务,但需通过后台任务请求机制,告知系统具体的任务类型和预计执行时间,以获取相应的资源分配。 #### 实现技巧与最佳实践 1. **异步处理**:对于耗时的操作,如...

    iOS 越狱逆向12.4-12.5.5 lldb动态调试包

    在越狱环境中,使用lldb可以更容易地获取到系统的深层信息,例如内核级别的调试、私有API的探索,甚至是修改运行时的行为。然而,这种操作也涉及到安全风险,因为越狱设备更容易受到恶意软件的攻击,因此在进行此类...

    理解iOS多线程应用的开发以及线程的创建方法

    同时,我们可以利用`NSThread`的类方法`mainThread`获取主线程,或者使用`isMainThread`判断当前代码是否在主线程运行。 除了`NSThread`,还可以使用GCD(Grand Central Dispatch)或NSOperationQueue来管理线程。...

    phonegap插件开发(获取第三方应用,打开第三方应用,判断第三方应用程序是否正在运行,获取手机全球唯一序列号,判断文件是否存在)

    在Android中,你可以通过`ActivityManager`的`getRunningTasks`方法来获取当前运行的任务,然后检查任务列表中是否有目标应用的Activity。在iOS中,由于安全性和隐私原因,无法直接获取其他应用的状态,但可以通过...

    iOS平台的应用程序调试与分析.pptx

    调试流程大致如下:通过SSH连接到设备,运行目标应用程序,使用`ps –ax`命令查看运行的进程,然后使用`gdb –p`调试特定进程。由于iOS应用通常包含加密代码,因此在分析时,可能需要去除DRM(Digital Rights ...

    iOS监听手机锁屏状态

    iOS系统中,监听手机锁屏状态是应用开发...在iOS系统中,当Springboard(负责管理主屏幕和图标布局的进程)的锁屏状态发生变化时,会发送"com.apple.springboard.lockcomplete"、"com.apple.springboard.lockstate"和...

Global site tag (gtag.js) - Google Analytics