gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:24 30 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

关于c++ - 检查正在运行的进程是 32 位还是 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19018252/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com