0

我之前的帖子之后,我想向前迈出一步:

我想分配一个共享内存区域,并为分配/共享数据放置初始值:

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 

建议?

非常感激 !

4

2 回答 2

4

首先,您只要求整数大小的共享内存,而不是整个结构。即使它被四舍五入到最接近的页面大小,您也应该始终使用您要使用的结构的适当大小。

其次,要从一个结构复制到另一个结构,您只需分配。要复制到指向结构的指针,您必须使用取消引用运算符*,例如:

*myPipe = myPipeSt;
于 2012-07-29T14:43:57.493 回答
2

这确实编译:

*myPipe = myPipeSt;

您可以使用简单的赋值运算符复制结构对象,myPipe因为它是一个指针,您需要取消引用它才能访问结构对象。

于 2012-07-29T14:43:04.277 回答