※ [本文轉錄自 C_and_CPP 看板]
作者: 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的值呢? 謝謝
--
作者: 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的值呢? 謝謝
--
All Comments