Попытка записи в int в разделяемой памяти (используя mmap) с дочерним процессом

Я играю с некоторым кодом, который требует связи между родителем и разветвленным дочерним процессом. Я создал int в разделяемой памяти до разветвления, но любые изменения, которые я делаю с дочерним процессом, похоже, не влияют на int при доступе родительского процесса. Вот фрагмент кода, который иллюстрирует мою проблему.

int * shared = mmap(NULL, sizeof(int), PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); 
pid_t child;
int childstate;
if((child=fork())==0){
      *shared = 1;
      exit(0);
}
waitpid (child, &childstate, 0); 
printf("%d",*shared);

Хотя дочерний процесс устанавливает значение «shared» равным 1, эта программа выводит 0.

В моей реальной программе структура будет разделена вместо int, но если я смогу понять этот фрагмент кода, я думаю, что остальное должно встать на свои места.

Я ни в коем случае не опытный программист, и я немного незнаком с C. Я часами пытался понять это и прочитать десятки страниц, которые говорят, что это должен быть простой процесс. Если честно, это был тяжелый удар по моей самооценке :). Я уверен, что мне просто не хватает какой-то маленькой детали - кто-нибудь может мне это указать? Спасибо заранее за ваше время.

Ответы на вопрос(1)

Ваш ответ на вопрос