如何在iOS 9中运行进程列表?

时间:2015-09-08 03:00:57

标签: ios9 sysctl

iOS 9之前,获取正在运行的进程列表的方法是使用sysctl这个方法

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);
            process = NULL;
        }
        return nil;
    }

    process = newprocess;
    st = sysctl(mib, miblen, process, &size, NULL, 0);
} while (st == -1 && errno == ENOMEM);

但iOS9之后,sysctl的()方法已经禁止被沙盒中的应用程序调用。

第一种技术是使用sysctl()函数来检索进程表(OS X的残余),其中包括正在运行的应用程序列表。在iOS 9中,sysctl()被修改为不再允许沙盒应用程序检索有关其他正在运行的进程的信息。

如何在iOS 9中运行进程列表?

1 个答案:

答案 0 :(得分:1)

正如OP所说,在iOS 9中,sysctl()被修改为不再允许沙盒应用程序检索有关其他正在运行的进程的信息。因此,现在无法获得正在运行的进程。