Hola buenas, tengo un pequeño problema.
Mi programa tiene que escribir y leer en memoria pero me da un error de segmentación.
Cuando mando algo a guardar me da este error
./mem e "Palabra"
./mem: Segmentation fault (core dumped)
Código C:
Ver original#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXELE 27
int main(int argc, char *argv[])
{
int id_memoria;
key_t segmento;
char *memoria, *cadena;
// Nombre del segmento de memoria
segmento = 5678;
// Creación del segmento de memoria
if((id_memoria = shmget(segmento, MAXELE, IPC_CREAT | IPC_EXCL | 0666)) == -1)
{
error("shmget");
}
// Unión del segmento de memoria a espacio de datos
if((memoria = shmat(id_memoria, NULL, 0)) == (char *)-1)
{
}
//Escribir en memoria
if ((strcmp(argv
[1],"e")) == 0) //strncpy(argv[2], memoria, MAXELE);
memoria = (char *)'a';
//Leer de la memoria
else if((strcmp(argv
[1],"l")) == 0) printf("lo que contiene: \"%s\"\n", memoria
);
//Eliminar de la memoria
else if((strcmp(argv
[1],"b")) == 0) {
shmctl(id_memoria, IPC_RMID, NULL);
}
//Detach
else if((strcmp(argv
[1] ,"d")) == 0) {
if (shmdt(memoria) == -1)
{
}
}
return 0;
}