簡體   English   中英

具有共享內存和初始化的結構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM