C言語でメモリをロックする方法
C言語では、以下の関数がメモリをロックするのに使用できます。
- mlock()
int mlock(const void *addr, size_t len);
アドレスをaddr、長さをlen(バイト単位)で指定してメモリー領域をロックする。正常終了は0、エラーは-1を返す。
- mlockall()
int mlockall(int flags);
flagsオプションは、ロックされるメモリの範囲を指定します。次の値を使用できます。
- MCL_CURRENT: ロックし、現在プロセスに割り当てられているすべてのメモリー領域をロックします。
- MCL_FUTURE: 将当前进程之后分配的所有内存空间锁定。
関数の戻り値が0ならば成功、-1ならば失敗
権限が必要なので、通常スーパーユーザー(root)として実行する必要があります。また、メモリロックはシステムパフォーマンスの低下につながる可能性があるため、注意して使用してください。