作者nagahara (Nagahara)
看板C_and_CPP
标题[问题] share memory存取权限问题
时间Thu Oct 22 21:54:52 2009
有一个资料结构长这样
typedef struct{
int head;
int tail;
int element_size;
void* array;
}Queue;
假设process A create一块share memory是sizeof(Queue)+ARRAY_SIZE
这块空间用一个Queue的指标接收:
Queue* queue = shmget(...);
queue->array指到queue下面多create出来的那块空间:
queue->array = (char*)queue + sizeof(Queue);
Process A存取Queue都没问题,
Process B用一个Queue*去get这块空间之後,可以存取head tail element_size
但是要取array里面的值时,却得到乱码,不然就会segment fault,
请问这是什麽原因呢? 要怎麽做才可以存取array的值呢? 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.192.107.210
※ 编辑: nagahara 来自: 123.192.107.210 (10/22 21:57)
※ nagahara:转录至看板 Linux 10/24 11:18