3

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

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()方法已经避免被沙盒中的App调用。</p>

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

如何在 iOS 9 中获取正在运行的进程列表?

4

1 回答 1

1

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

于 2015-11-01T13:31:50.667 回答