[問題] share memory存取權限問題
有一個資料結構長這樣
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