Переменная область в C - PullRequest
0 голосов
/ 14 марта 2011

У меня есть функция main (), и до объявления main () я объявляю глобальные переменные.

Затем внутри main () запускаются 2 процесса: 1 дочерний и 1 родительский с помощью fork (). Почему родительский и дочерний процессы не могут использовать глобальные переменные, которые я объявил? Какой хороший способ справиться с этим? Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

Когда вы fork(), вы порождаете новый процесс.Все на момент разветвления копируется, но после этого ... ничего не передается.

В этот момент у вас есть два варианта:

  • Сохранитьканал, открытый между вашими двумя процессами и сообщающий об изменениях
  • Переписать свой код, чтобы он был многопоточным, где вы можете получить доступ к одним и тем же данным (используя блокировки)
0 голосов
/ 14 марта 2011

С помощью fork () вы создаете новый процесс с отдельным пространством памяти.Для связи между процессами вы можете использовать сигналы (используя kill ())

Если вы хотите использовать переменные совместно, рассмотрите возможность использования потоков (например, pthread.h).Затем вы можете использовать события или мьютексы для синхронизации потоков.

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