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ć?