1

実際、私はiPhoneアプリに取り組んでいます。アクティブな状態にあるアプリの数と同じように、バックグラウンドにあるアプリケーションの状態またはアプリケーションの数を追跡したかったのです。タスクを追跡する方法を教えてください。タスクマネージャーに関連していると思います。ポインタを教えてください。ありがとう

4

1 に答える 1

1

私はこれをやろうとしていたときに時間のトーンを費やしました。しかし、結果はありません。

私が得ることができた最良の結果は、アクティブとバックグラウンドの両方で実行中のアプリケーションのリスト(実際には実行中のプロセスのリスト)を取得することです。

-(void) listOfProcesses {
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};
size_t miblen = 4;

size_t size;
sysctl(mib, miblen, NULL, &size, NULL, 0);
int st;

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 = 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){              
            for (int i = nprocess - 1; i >= 0; i--){
                NSLog(@"Pid: %d, Process name: %@",process[i].kp_proc.p_pid,process[i].kp_proc.p_comm);
            }
            free(process);
        }
    }
}

}

このリストにはいくつかのシステムプロセスがありますが、それらをソートするのに問題はありません。

mo情報については、このマニュアルを参照してください。

これはUnixシステムコールのリストです。これは役立つかもしれません。

それが役に立てば幸い。

于 2012-08-08T14:48:11.477 に答える