1

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

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

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

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

4

2 回答 2

2

在 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 位的。

于 2013-09-26T05:02:56.213 回答
1

使用文件:

file -L /proc/[PID]/exe
于 2013-09-26T02:28:19.007 回答