如何在Windows,Mac和Linux上确定指定的进程是32位还是64位。
在 Linux 和 Mac 上,我有一个流程的pid。我想如果系统本身是64位,那么应用程序应该是64位,与32位相同。但我听说64位Linux和Mac也可以运行32位应用程序。我该怎么做才能确定?
在 Windows 上,我有一个处理过程。目前我正在使用IsWow64Process。它是否正确? (编辑:是的,它是正确的,但需要与GetNativeSystemInfo一起使用,以查看操作系统是否为64位)。
编辑:对于Mac,请参阅this问题。
答案 0 :(得分:1)
使用档案:
file -L /proc/[PID]/exe
答案 1 :(得分: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位。