2013-09-26 204 views
0

如何確定Windows,Mac和Linux上的指定進程是32位還是64位?檢查正在運行的進程是32位還是64位

LinuxMac我有一個PID過程。我在想,如果系統本身是64位,那麼應用程序應該是64位,與32位相同。但是我聽說64位Linux和Mac也可以運行32位應用程序。我該怎麼做才能確定?

的Windows我有一個句柄過程。目前我正在使用IsWow64Process。它是否正確? (編輯:是這是正確的,但需要與GetNativeSystemInfo一起使用來查看操作系統是否是64位)。

編輯:對於Mac看到this問題。

回答

1

在OS X上,ps的標誌值包括位,表明64位模式:

$ ps -oflags= [PID] 
     4004 

從PS手冊頁:

flags  The flags associated with the process as in the include file 
      <sys/proc.h>: 

      P_ADVLOCK   0x00001  Process may hold a POSIX 
              advisory lock 
      P_CONTROLT   0x00002  Has a controlling terminal 
      P_LP64    0x00004  Process is LP64 
      P_NOCLDSTOP   0x00008  No SIGCHLD when children stop 
      [etc...] 

...因此,如果標誌值的最後一位數字是4,5,6,7,C,d,e或f時,在LP64運行(即64位)模式。在上面的例子中,flags = 4004,所以列出的進程是64位。

+0

不完全是答案,但它使我走上正軌。原始問題中的其他細節。 – Dave

1

使用file:

file -L /proc/[PID]/exe 
+0

我不知道MacOS是否有'/ proc/[PID]/exe'。我相信Windows不會。 –

+0

Windows和Mac沒有。我在Mac上使用libproc來處理其他內容。 – Dave

相關問題