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

我试图找到如何检查锁定的共享内存,即使用shmctl(SHM_LOCK),我发现我们可以通过检查shmid_ds.shmperm.mode标志在代码中检查它.

现在,与mlock()一样,我们可以通过检查/ proc /< PID> / status和VmLck值来检查正在使用的内存量.

我想知道是否有任何方法可以检查使用shmctl(SHM_LOCK)锁定的进程使用了​​多少共享内存?

我已经尝试使用mlock函数,它确实显示了使用了多少内存但是如果我使用shmctl(SHM_LOCK)它会显示0kb.

只是添加,我想在shell中或通过代码看到锁定的内存(没有区别).我只需要一个价值.

尝试浏览论坛但找不到任何答案.任何帮助表示赞赏.

最佳答案 您应该使用ipcs(1)命令,如下所示:

ipcs | grep locked

ipcs命令在’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") : " ");
点赞