【发布时间】:2013-08-03 14:00:01
【问题描述】:
我已经通过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];
我很抱歉我的英语不好,代码是here
【问题讨论】:
-
使用
gcc -Wall -g编译并使用gdb(可能还有valgrind)进行调试。 -
另外,测试
shmat的结果。失败时(当其结果为(void*)-1L时)使用perror或strerror显示errno
标签: linux caching shared-memory