2014-02-14 68 views
3

我試圖找到如何檢查鎖定的共享內存,即使用shmctl(SHM_LOCK),我發現我們可以通過檢查shmid_ds.shmperm.mode標誌在代碼中檢查它。我們如何檢查linux中進程的「鎖定」共享內存?

現在,與mlock()一樣,我們可以通過檢查/proc/<PID>/statusVmLck值來檢查正在使用多少內存。

我想知道是否有任何方法檢查使用shmctl(SHM_LOCK)鎖定的進程正在使用多少共享內存?

我試過使用mlock函數,它確實顯示使用了多少內存,但如果我使用shmctl(SHM_LOCK),它顯示0kb。

只是要添加,我想看到在外殼或通過代碼鎖定的內存(沒有區別)。我只需要一個價值。

試圖通過論壇看,但無法找到任何答案。任何幫助表示讚賞。

回答

1

應該使用IPCS(1)命令,如:

ipcs | grep locked 

ipcs命令顯示上的 '狀態' 字段中的 '鎖定' 狀態,如圖中的ipcs.c代碼:

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