Bueno dado que mi profesor es un incompetente y por mucho que busco en google no encuentro nada os pongo a continuación un sencillo codigo que en cuanto saque el error lo podré implantar en un programa mayor.
#include<stdio.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<time.h>
typedef struct
{
int numero;
char tipo[2];
char jugada[4];
}baraja;
void main()
{
int i=0,id=0,segsize=0,pid=1,estado=0,direccion=0;
key_t KEY;
char *archivo;
int idkey;
baraja jugadas[5][10];
segsize=sizeof(jugadas)/sizeof(baraja);
baraja *juego;
struct shmid_ds shmbuf;
archivo="/home/jJuego/hijos/memoriacompartida/llave.cle";
idkey=1234;
KEY=ftok(archivo,idkey);
id=shmget(KEY,segsize,IPC_CREAT | 0666);
printf("%i \n",id);
if(id<0)
{
printf("ERROR EN CREADOR: FALLO EL SHMGET\n");
}
juego=(struct baraja*) shmat(id,0,0);
direccion=&jugadas[1][3].numero;
juego=direccion;
pid=fork();
if(pid==0) //hijo
{
KEY=ftok(archivo,idkey);
id=shmget(KEY,segsize,0);
juego=(struct baraja*) shmat(id,0,0);
juego=direccion;
juego->numero=9;
printf("%i\n",juego->numero);
}
else // padre
{
wait(&estado);
printf("%i\n",jugadas[1][3].numero);
}
}
Resultado:
9
24 --> OMFG?¿?
quiero que el padre imprima el numero que le he indicado en el hijo