如何在OS X中使用目标c获取父进程ID?

时间:2014-02-24 11:06:21

标签: objective-c macos pid

我有一些进程的PID,需要获取父进程ID。如何使用目标c获得它?

1 个答案:

答案 0 :(得分:1)

原始来源:http://www.objectpark.net/parentpid.html

#include <sys/sysctl.h>

#define OPProcessValueUnknown UINT_MAX

int ProcessIDForParentOfProcessID(int pid)
{
    struct kinfo_proc info;
    size_t length = sizeof(struct kinfo_proc);
    int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid };
    if (sysctl(mib, 4, &info, &length, NULL, 0) < 0)
        return OPProcessValueUnknown;
    if (length == 0)
        return OPProcessValueUnknown;
    return info.kp_eproc.e_ppid;
}