oregon ha scritto:
Quindi ...
double *p;
p = (double *)shmP;
int main(void) {
int running = 1;
void * ShmP = (void *)0;
float *p;
int ShmID;
int WriteID, ReadID;
WriteID = semget(SEM_KEY_WRITE, 1, 0666 | IPC_CREAT);
ReadID = semget(SEM_KEY_READ, 1, 0666 | IPC_CREAT);
ShmID = shmget(SHM_KEY, sizeof(struct SharedData), 0666 | IPC_CREAT);
ShmP = shmat(ShmID, (void *)0, 0);
p = (float *)ShmP;
printf("Memoria agganciata all'indirizzo %X\n", p);
while(running) {
if (SEM_P(WriteID)==-1) exit(EXIT_FAILURE);
printf ("Inserisci i 5 elementi del vettore\n");
for (i=0; i<5; i++){
printf("Inserisci elemento");
scanf("%f", &vettore[i]);
}
if (SEM_V(ReadID)==-1) exit(EXIT_FAILURE);
}
if (shmdt(ShmP) == -1) {
fprintf(stderr, "shmdt failed\n");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
Il produttore dovrebbe scrivere gli elementi del vettore condiviso all'interno della shared memory.
É corretto?