При написании кода ch указывает на некоторую разделяемую память, но сам ch (т.е. указатель) не разделяется. Поскольку присваивание ch происходит только у потомка, родитель будет продолжать видеть ch как NULL.
У вас есть два способа исправить это:
- Настройте общую память до разветвления.
- Пусть родитель и ребенок открывают одну и ту же общую память.
При работе с записями в общей памяти вам необходимо убедиться, что все данные для этой записи находятся в общей памяти. Например, в этом коде:
ch->name=ugur;
ch->surname=cedric;
Похоже, что mylist :: name является символом *. Если ch указывает на запись в разделяемой памяти, это только поместит указатели на имена в разделяемой памяти. Если вы не предпримете конкретные шаги для помещения этих строк в общую память, они будут в обычной памяти и, вероятно, не будут доступны для других программ.