0

shmget で Linux 共有メモリを作成し、最初のメモリ アドレスにこのようなグローバル管理構造体を作成します。

 typedef struct{
        mini_kv_key *slots;
        unsigned int slots_mask;
        unsigned int slots_num;
        mini_cache_segment **segments;  
        unsigned int segments_num;
        unsigned int segments_mask;
    } mini_cache_globals;

使ってみます

mini_cache_globals mini_cache = shmat(0, NULL, 0);

この管理構造体を取得しますが、使用するとわかります

mini_cache->slots[index];

mini_kv_key を取得すると、セグメント フォールトが返されます。

mini_cache->segments_num[index];

下手な英語で申し訳ありません。コードはこちらです

4

1 に答える 1