0

Linux では、C から Linux で PID によってプロセスの CPU 使用率を計算する方法に/proc記載されているように使用できますか? プロセスとその子の CPU 時間を取得します。

OS Xでこれを行うにはどうすればよいですか?

4

1 に答える 1

1

sysctlを使用してプロセス情報を取得できます。したがって、プロセスの pid があると仮定しましょう: -

#include <sys/sysctl.h>

struct kinfo_proc *getProcessInfo(pid_t pid)
{
    struct kinfo_proc* list = NULL;

    int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid};
    size_t size = 0;

    sysctl(mib, sizeof(mib) / sizeof(*mib), NULL, &size, NULL, 0);

    list = (kinfo_proc*)malloc(size);
    sysctl(mib, sizeof(mib) / sizeof(*mib), list, &size, NULL, 0);

    return list;
}

sysctl から返されたエラーを忘れずに確認してください。簡潔にするためにそれらを省略しました。終了したら、返された構造体を解放することを忘れないでください。

返されたkinfo_proc構造体には構造体extern_procが含まれており、次の属性があります。

struct extern_proc {
    union {
        struct {
            struct  proc *__p_forw; /* Doubly-linked run/sleep queue. */
            struct  proc *__p_back;
        } p_st1;
        struct timeval __p_starttime;   /* process start time */
    } p_un;

    ....
}

__p_starttime、あなたが探しているものです。

于 2015-02-24T13:34:28.123 に答える