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

1

您正在尝试访问仅在其他进程中有效的指针(该进程实际创建结构并设置指针。)保存在共享结构中的任何指针在任何其他进程中均无效。为了实现您的目标,您应该将所有需要共享的数据保存在共享内存中,并存储相对偏移量而不是指针。

于 2013-08-03T16:15:01.943 回答