我试图找到如何检查锁定的共享内存,即使用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") : " ");