#c #variables #static
#c #переменные #статические
Вопрос:
У меня возникла некоторая проблема с проектом на C. Ситуация следующая:
- У меня есть основной файл, который включает file .h со статическими переменными и другой файл C со всеми функциями (сюда также входит file .h).
- Если я запускаю main, он работает нормально, но я хотел бы запускать разные экземпляры в разных оболочках, чтобы я мог обмениваться сообщениями.
Проблема в том, что оба процесса выделяют статические переменные в одном и том же расположении памяти, поэтому операции, выполняемые вторым экземпляром, будут перезаписывать операции первого экземпляра.
Надеюсь, я ясно выразился, я не очень разбираюсь в C.
Ответ №1:
Вы не можете использовать статическую переменную для обмена данными между двумя процессами. Адреса, которые вы видите, с большой вероятностью будут виртуальными, т. Е. каждый процесс имеет свое собственное адресное пространство, поэтому, хотя адрес может выглядеть идентичным, на самом деле он отображается в другой оперативной памяти.
Вам нужно реальное решение для межпроцессного взаимодействия (IPC), такое как файлы, общая память, каналы, сокеты или аналогичный подход.
Комментарии:
1. Для ясности: статические переменные не являются общими для процессов. Они просто являются общими для всех библиотек и объектных файлов, связанных с одним и тем же процессом.
Ответ №2:
Это не так. Каждый процесс получает свое собственное совершенно отдельное адресное пространство, поэтому они не могут перезаписывать друг друга.