Pamięć współdzielona na widelec

Chcę utworzyć pamięć współdzieloną między dwoma procesami. Użyłem fork (). Dziecko próbuje zmienić tę wspólną pamięć, a matka tworzy kolejne dziecko, więc nowe dziecko próbuje zmienić tę samą pamięć. oto mój kod w programowaniu w C. (ubuntu)

mylist ch=NUL; 
f=fork();
if(!f){
        pba=shmget(KEYSHM,sizeof(char),0); /*created shared memory*/
        ch=(mylist *) shmat(pba,0,0);
        ch->name=ugur;
        ch->surname=cedric;
...do something...
}
else{
        if(ch)
        printf("this is top of mylist %s"ch->name);
.......do something
}

Nigdy nie pisze ch-> name. czemu? Stworzyłem pamięć współdzieloną. Dlaczego proces macierzysty nie może czytać?

questionAnswers(6)

yourAnswerToTheQuestion