вопрос по многопроцессорности и статическим переменным в C - PullRequest
2 голосов
/ 04 мая 2011

У меня возникли проблемы с C-проектом.Ситуация следующая:

  1. У меня есть основной файл, который включает в себя файл .h со статическими переменными и еще один файл C со всеми функциями (в том числе файл .h).
  2. Если я запускаю основной, он работает нормально, но я хотел бы запускать разные экземпляры на разных оболочках, чтобы я мог обмениваться сообщениями.

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

Надеюсь, я был ясен, я не очень опытен в C.

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

Нельзя использовать статическую переменную для обмена данными между двумя процессами.Скорее всего, адреса, которые вы видите, будут виртуальными , то есть каждый процесс имеет свое собственное адресное пространство, поэтому, хотя адрес может выглядеть одинаково, он действительно сопоставлен с другим ОЗУ.

Вам нужнореальное решение для межпроцессного взаимодействия (IPC), такое как файлы, общая память, каналы, сокеты или аналогичный подход.

0 голосов
/ 04 мая 2011

Это не так.Каждый процесс получает свое собственное совершенно отдельное адресное пространство, поэтому они не могут перезаписывать друг друга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...