2009-08-29 36 views
7

Có cách nào có lập trình để tìm hiểu cấu trúc nào của quá trình khác đang chạy trên Mac OS X 10.5 trở lên không?Xác định kiến ​​trúc của quy trình

Kiểm tra tệp hình ảnh của quá trình không phải là giải pháp vì hình ảnh có thể chứa nhiều kiến ​​trúc và giữa các hộp kiểm “Mở trong Rosetta” và “Mở trong chế độ 32 bit”, không có cách để nói từ hình ảnh một mình mà kiến ​​trúc thực sự đang chạy.

+1

Chắc chắn phải có ... Hoạt động giám sát thực hiện chính xác điều đó. –

Trả lời

6

Bạn có thể sử dụng NSRunningApplication trên OSes ở nơi có sẵn và quay lại công cụ sysctl khi không? Tôi không nghĩ rằng công cụ sysctl là API có thể hỗ trợ theo cách mà hầu hết mọi thứ đều có, nhưng nếu bạn chỉ sử dụng nó trên các hệ điều hành cũ thì bạn sẽ không sao.

Hãy thử điều này để có được những loại CPU của quá trình:

cpu_type_t cpuType 
    size_t  cpuTypeSize; 
    int   mib[CTL_MAXNAME]; 
    size_t  mibLen; 
     mibLen = CTL_MAXNAME; 
    err = sysctlnametomib("sysctl.proc_cputype", mib, &mibLen); 
    if (err == -1) { 
     err = errno; 
    } 
    if (err == 0) { 
     assert(mibLen < CTL_MAXNAME); 
     mib[mibLen] = pid; 
     mibLen += 1; 

     cpuTypeSize = sizeof(cpuType); 
     err = sysctl(mib, mibLen, &cpuType, &cpuTypeSize, 0, 0); 
     if (err == -1) { 
      err = errno; 
     } 
    } 

Và kiểm tra CPU_ARCH_ABI64 để kiểm tra các phiên bản 64-bit.

+0

'sysctl' được hỗ trợ API. Điều đó có vẻ đầy hứa hẹn; Tôi sẽ cho bạn biết làm thế nào nó đi một lần tôi có một cơ hội để thử nó ra (bận rộn với những điều nhấn mạnh vào lúc này). –

+1

Chức năng 'sysctl' sẽ không đi đâu cả. Những thứ trong trang người đàn ông không đi đâu cả. Nhưng nếu bạn làm 'sysctl -a', bạn sẽ thấy toàn bộ các thứ khác, kể cả cái này. Đây không nhất thiết phải được hỗ trợ. – Ken

+0

Chỉ là những gì tôi cần. Cảm ơn! –

2

Bạn không nói yêu cầu của mình là gì, nhưng lớp NSRunningApplication được giới thiệu trong 10.6 cung cấp giao diện thực sự dễ dàng cho việc này. Các tài liệu hiện có một chút, nhưng nó ở đó.

+0

Có vẻ đẹp. Thật không may, tôi đang nhắm mục tiêu Leopard. Tôi đã chỉnh sửa câu hỏi của mình để bao gồm điều này. –

Các vấn đề liên quan