有没有办法检查进程是64位还是32位?
我试图从进程 pid 中查找进程类型(32 位/64 位)?
我使用 GetBSDProcessList 此处描述的方法。
我们如何获取进程类型信息?有什么想法吗?
我可以使用 Defined(i386) 或 Defined(x86_64),但前提是我们正在进行中。我退出了这个过程。
I am trying to find process type (32 bit/ 64bit) from process pid?
I get the process information and process list from using GetBSDProcessList method described here.
how can we get the process type information? Any Ideas?
I can use defined(i386) or defined(x86_64) but only if we are in process. I am out of the process.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
GetBSDProcessList 返回一个
kinfo_proc
。kinfo_proc
有一个kp_proc
成员 其类型为extern_proc
。extern_proc
有p_flag
成员,其中一个标志是 P_LP64,表示“进程是 LP64”)。所以你应该能够检查:(注意:如评论中所示,你需要使用 链接
:)
GetBSDProcessList returns a
kinfo_proc
. Thekinfo_proc
has akp_proc
member which is of typeextern_proc
. Theextern_proc
has ap_flag
member, which one of the flags is P_LP64, indicating "Process is LP64"). So you should be able to check with:(Note: As shown in the comment, you need to use the
B_get_process_info
found in Link:)
好吧,我做了很多研究并找到了更好的解决方案。尽管 sysctl 方法有效,但文档指出应该避免使用它。下面的方法使用 libproc.h 的 proc_pidinfo 函数,其工作方式与 sysctl 类似。这显然是针对苹果平台的。
Okay so I did a lot of research and figured out a better solution. Although the sysctl approach works, the documentation states it should be avoided. The method below uses libproc.h's proc_pidinfo function and works similarly to sysctl. This is obviously for Apple's platforms.
如果您想在终端上查找 32 位运行的进程
ps aux -oflags | grep '[01238ab]$'
所有其他都是 64 位,但您可以运行
ps aux -oflags | grep '[4567cdef]$'
If you want to find on the terminal the processes that are 32 bit run
ps aux -oflags | grep '[01238ab]$'
All the others are 64 bit, but you could run
ps aux -oflags | grep '[4567cdef]$'