GetBSDProcessList kinfo_proc
देता है। kinfo_proc
में kp_proc
सदस्य which is of type extern_proc
है। extern_proc
has a p_flag
member, झंडे में से कौन सा P_LP64 है, जो दर्शाता है "प्रक्रिया एलपी 64 है")।
int is64bit = proc->kp_proc.p_flags & P_LP64;
(नोट::
static int
B_get_process_info(pid_t pid, struct kinfo_proc *kp)
{
size_t bufsize = 0;
size_t orig_bufsize = 0;
int retry_count = 0;
int local_error = 0;
int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, 0 };
mib[3] = pid;
orig_bufsize = bufsize = sizeof(struct kinfo_proc);
for (retry_count = 0; ; retry_count++) {
local_error = 0;
bufsize = orig_bufsize;
if ((local_error = sysctl(mib, 4, kp, &bufsize, NULL, 0)) < 0) {
if (retry_count < 1000) {
sleep(1);
continue;
}
return local_error;
} else if (local_error == 0) {
break;
}
sleep(1);
}
return local_error;
}
: जैसा कि टिप्पणी में दिखाया गया है, तो आप B_get_process_info
http://osxbook.com/book/bonus/chapter8/core/download/gcore.c में पाया उपयोग करने की आवश्यकता)
मैंने कोड का परीक्षण किया, लेकिन यह वांछित परिणाम नहीं देता है। यह हमेशा 0. – MacGeek
@Rahul: क्या होगा यदि आप 'kinfo_proc' प्राप्त करने के लिए http://osxbook.com/book/bonus/chapter8/core/download/gcore.c में पाए गए B_get_process_info का उपयोग करते हैं? (और ऐसा लगता है कि आपको इसे 'सुडो' के साथ चलाने की आवश्यकता है।) – kennytm
B_get_process_info काम करता है। महान। बहुत धन्यवाद! – MacGeek