0

我想找到给定进程使用的所有共享内存段。我对找出 shmid 尤其感兴趣,因此我可以在调用 shmctl() 时使用它。

在 Solaris 上,我只需阅读 /proc/$PID/map 即可找出该信息(字段 pr_shmid)。该文件的内容由 sys/procfs 中的 struct prmap_t 定义。

AIX 也有一个 /proc/$PID/map 文件。还有一个 struct prmap 但不幸的是它缺少 pr_shmid 字段。

有什么想法可以在 AIX5.3+ 上实现吗?

4

2 回答 2

1

我不特别了解 AIX,但我认为该ipcs命令在支持 SysV IPC 的情况下是相当标准的,因此我希望该ipcs -m命令能够提供适当的信息;如果找不到更好的方法,则解析其输出可能是一种选择。

于 2010-01-23T01:19:42.823 回答
0

svmon -P 将按类型列出进程内存段。

您还可以使用 -S 查看哪些 PID 附加到段。使用 -S,首先运行 ipcs -bmS,然后获取不带 0x 的 SID,并将其与

svmon -lS [SID]

这将返回附加的 PID。

于 2010-03-20T23:30:48.720 回答