1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/process/process_handle.h"
7 #include <sys/sysctl.h>
13 ProcessId
GetParentProcessId(ProcessHandle process
) {
14 struct kinfo_proc info
;
16 int mib
[] = { CTL_KERN
, KERN_PROC
, KERN_PROC_PID
, process
,
17 sizeof(struct kinfo_proc
), 0 };
19 if (sysctl(mib
, arraysize(mib
), NULL
, &length
, NULL
, 0) < 0)
22 mib
[5] = (length
/ sizeof(struct kinfo_proc
));
24 if (sysctl(mib
, arraysize(mib
), &info
, &length
, NULL
, 0) < 0)
30 FilePath
GetProcessExecutablePath(ProcessHandle process
) {
33 int mib
[] = { CTL_KERN
, KERN_PROC
, KERN_PROC_PID
, process
,
34 sizeof(struct kinfo_proc
), 0 };
36 if (sysctl(mib
, arraysize(mib
), NULL
, &len
, NULL
, 0) == -1)
38 mib
[5] = (len
/ sizeof(struct kinfo_proc
));
39 if (sysctl(mib
, arraysize(mib
), &kp
, &len
, NULL
, 0) < 0)
41 if ((kp
.p_flag
& P_SYSTEM
) != 0)
43 if (strcmp(kp
.p_comm
, "chrome") == 0)
44 return FilePath(kp
.p_comm
);