【问题标题】:Struct with shared memory and initialization具有共享内存和初始化的结构
【发布时间】:2012-07-29 14:38:18
【问题描述】:

my previous 发帖之后,我想更进一步:

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

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 

建议?

非常感谢!

【问题讨论】:

    标签: c linux struct shared-memory


    【解决方案1】:

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

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

    *myPipe = myPipeSt;
    

    【讨论】:

      【解决方案2】:

      这确实编译:

      *myPipe = myPipeSt;
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        • 2011-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多