[英]Struct with shared memory and initialization
在上一篇文章之后,我想向前邁出一步:
我想分配一個共享內存區域,並為分配/共享的數據放置初始值:
static struct PipeShm myPipeSt = {.init = 0 , .flag = FALSE , .mutex = NULL , .ptr1 = NULL , .ptr2 = NULL ,
.status1 = -10 , .status2 = -10 , .semaphoreFlag = FALSE };
int shmid = shmget(IPC_PRIVATE, sizeof(int), 0600);
static struct PipeShm * myPipe = shmat(shmid, NULL, 0); // &myPipeSt;
myPipe = & myPipeSt; // that doesn't compile
建議?
非常感激 !
首先,您只要求共享內存的整數大小,而不是整個結構的大小。 即使將其四舍五入到最接近的頁面大小,也應始終使用要使用的結構的適當大小。
其次,要將一個結構復制到另一個結構,只需分配。 要復制指向結構的指針,必須使用解引用運算符*
,例如:
*myPipe = myPipeSt;
這樣可以編譯:
*myPipe = myPipeSt;
您可以使用簡單的賦值運算符復制結構對象,對於myPipe
因為它是一個指針,因此需要取消引用它才能訪問結構對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.