ho problemi a gestire una matrice in memoria condivisa. Il mio codice è il seguente:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main(void) {
key_t key_matrix;
int id_matrix;
int **matrix;
printf("Creo la memoria condivisa per la matrice...\n");
key_matrix = ftok("./", 'a');
id_matrix = shmget(key_matrix, sizeof(int[2][3]), IPC_CREAT|IPC_EXCL|0664);
if(id_matrix==-1) (id_matrix = shmget(key_matrix, sizeof(int[2][3]), 0));
printf("Collego la memoria condivisa per la matrice...\n");
matrix = shmat(id_matrix, 0, 0);
printf("Scrivo nella matrice...\n");
matrix[0][0] = 14;
printf("Ho scritto %d\n", matrix[0][0]);
return 0;
}
Codice: Seleziona tutto
Creo la memoria condivisa per la matrice...
Collego la memoria condivisa per la matrice...
Scrivo nella matrice...
Errore di segmentazione (core dump creato)