Salve a tutti sto provando ad usare la memoria condivisa tra processi però ancora prima di creare i processi sto riscontrando problemi nella modifica dei dati sulla struttura condivisa:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int s1;
struct segment{
int mtype;
char text[128];
};
int main(){
key_t key = ftok("password.txt",1);
if(key==-1){
printf("Error key\n");
exit(0);
}
s1 = shmget(key,sizeof(struct segment),IPC_CREAT);
if(s1==-1){
printf("Error s1\n");
exit(0);
}
struct segment* data = (struct segment*)shmat(s1, (void*)0, 0);
/*qui sulla prossima assegnazione mi da errore e penso sia dovuto
al fatto che sto puntando ad una zona di memoria della dimensione
della struttura ma che di fatto ancora non contiene una struttura dichiarata e
quindi non posso farlo però non so come condividere in memoria
una struttura dichiarata*/
data->mtype=1;
return 0;
}
Un'altra domanda è: "Se nel segmento s1 condivido una stringa ed una struttura, come faccio ad accedere ad entrambe avendo il puntatore alla zona di memoria e non rispettivamente un puntatore alla stringa ed uno alla struttura?