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 3
int main() {
int shmid;
key_t key = ftok("archivo_key", 'R'); // Cambia "archivo_key" por el nombre del archivo que desees utilizar
// Crea la memoria compartida
shmid = 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 proceso
int *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 ceros
for (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 desvincularla
if (shmdt(matriz) == -1) {
perror("Error al desvincular memoria compartida");
exit(EXIT_FAILURE);
}
return 0;
}