在Linux中,我们如何检查进程的“锁定”共享内存?

4
我试图找到如何检查锁定的共享内存,即使用shmctl(SHM_LOCK),我发现我们可以通过检查shmid_ds.shmperm.mode标志在代码中检查它。
现在,就像使用mlock()一样,我们可以通过检查/proc/<PID>/statusVmLck值来检查正在使用多少内存。
我想知道是否有任何方法可以检查使用shmctl(SHM_LOCK)锁定的进程正在使用多少共享内存?
我已经尝试使用mlock函数,但如果我使用shmctl(SHM_LOCK),它会显示0kb。
补充一下,我想在shell或代码中看到锁定的内存(没有区别)。我只需要一个值。
我尝试在论坛中寻找答案,但找不到任何答案。 感激任何帮助。
1个回答

2
您应该使用ipcs(1)命令,如下所示:
ipcs | grep locked

ipc 命令在 'status' 字段上显示 'locked' 状态,如 ipcs.c 代码所示:

        printf (" %-10ju %-6s %-6s\n",
                  shmdsp->shm_nattch,
                  shmdsp->shm_perm.mode & SHM_DEST ? _("dest") : " ",                    shmdsp->shm_perm.mode & SHM_LOCKED ? _("locked") : " ");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接