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 中获取正在运行的进程列表?