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() メソッドはサンドボックスでのアプリの使用を禁止されています。</p>
最初の手法は、sysctl() 関数を使用して、実行中のアプリのリストを含むプロセス テーブル (OS X の残骸) を取得することでした。iOS 9 では、sysctl() が変更され、サンドボックス化されたアプリが他の実行中のプロセスに関する情報を取得できなくなりました。
iOS 9 で実行中のプロセス リストを取得するには?