检查正在运行的进程是32位还是64位

时间:2013-09-26 02:17:52

标签: c++ linux windows macos process

如何在Windows,Mac和Linux上确定指定的进程是32位还是64位。

Linux Mac 上,我有一个流程的pid。我想如果系统本身是64位,那么应用程序应该是64位,与32位相同。但我听说64位Linux和Mac也可以运行32位应用程序。我该怎么做才能确定?

Windows 上,我有一个处理过程。目前我正在使用IsWow64Process。它是否正确? (编辑:是的,它是正确的,但需要与GetNativeSystemInfo一起使用,以查看操作系统是否为64位)。

编辑:对于Mac,请参阅this问题。

2 个答案:

答案 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位。

相关问题