Memoria compartida
Publicado por Mikro (1 intervención) el 16/12/2001 06:37:56
Hola alguien puede explicarme como declarar una matriz de memoria compartida
gracias
gracias
Valora esta pregunta


0



#include <stdio.h>#include <stdlib.h>#include <sys/ipc.h>#include <sys/shm.h>#define FILAS 3#define COLUMNAS 3int main() {
int shmid;
key_t key = ftok("archivo_key", 'R'); // Cambia "archivo_key" por el nombre del archivo que desees utilizar
// Crea la memoria compartidashmid = shmget(key, sizeof(int) * FILAS * COLUMNAS, IPC_CREAT | 0666);
if (shmid == -1) {
perror("Error al crear memoria compartida");
exit(EXIT_FAILURE);
} // Adjunta la memoria compartida al espacio de direcciones del procesoint *matriz = (int*)shmat(shmid, NULL, 0);
if (matriz == (int*)-1) {
perror("Error al adjuntar memoria compartida");
exit(EXIT_FAILURE);
} // Ahora puedes acceder y manipular la matriz como lo harías normalmente // Por ejemplo, inicializarla con cerosfor (int i = 0; i < FILAS; ++i) {
for (int j = 0; j < COLUMNAS; ++j) {
matriz[i * COLUMNAS + j] = 0;
} } // Después de usar la memoria compartida, no olvides desvincularlaif (shmdt(matriz) == -1) {
perror("Error al desvincular memoria compartida");
exit(EXIT_FAILURE);
}return 0;
}
