我通过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];我为我糟糕的英语感到很抱歉,代码是这里
发布于 2013-08-03 16:15:01
您正在尝试访问仅在其他进程中有效的指针(该进程实际上创建了结构并设置了指针)。保存在共享结构中的任何指针在任何其他进程中都无效。为了达到您的目标,您应该保存所有需要共享的数据,并存储相对偏移量,而不是指针。
https://stackoverflow.com/questions/18033608
复制相似问题