Following my previous post , I want to take that one step ahead :
I want to allocate a shared memory region , and put initial values for the allocated/shared
data :
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
Suggestions ?
Much appreciated !
First of all you only ask for shared memory for the size of an integer, not for the whole structure. Even if it’s rounded up to the nearest page size, you should always use proper size of the structure you are going to use.
Secondly, to copy from one structure to another, you simply assign. To copy to a pointer to the structure, you have to use the dereferencing operator
*, like: