10

getrlimit(RLIMIT_MEMLOCK)を使用すると、プロセスが割り当てることができるロックされたメモリの許容量を取得できます(mlock()またはmlockall())。

しかし、現在ロックされているメモリ量を取得するにはどうすればよいですか?

たとえば、getrusage()によって返される情報はありません。

Linuxでは、/ proc / self / statusを読み取り、VmLckで始まる行からロックされたメモリの量を抽出することができます。

Linux、* BSD、およびその他のPOSIX互換システムで機能するロックされたメモリの量を取得するためのポータブルな方法はありますか?

4

1 に答える 1

3

おそらく、各システムを確認し、それに応じて実装する必要があります。Linux の場合:

cat /proc/$PID/status | grep VmLck

この情報は、直接アクセスできないと思われる関数( array.c 内) で作成されるため、おそらく C でも同じことを行う必要があります (1 行ずつ読ん/procで を検索します)。何かのようなもの:VmLcktask_mem

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

char cwd[PATH_MAX];
sprintf(cwd, "/proc/%d/status", getpid());

FILE* fp = fopen(cwd, "r");
if(!fp) {
    exit(EXIT_FAILURE);
}

while((read = getline(&line, &len, fp)) != -1) {
    // search for line starting by "VmLck"
}
于 2011-04-26T11:10:02.800 に答える