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 に答える