вызов fork () в c - PullRequest
       22

вызов fork () в c

3 голосов
/ 27 сентября 2011

Я использовал fork () для создания 2 разных процессов, работающих в 2 разных адресных пространствах.Теперь в родительском процессе мне нужно значение переменной из адресного пространства дочернего элемента или, если дочерний процесс может изменить переменную в адресном пространстве родительского процесса.Возможно ли это?

Ответы [ 4 ]

5 голосов
/ 27 сентября 2011

Нет, как только вы разветвитесь, каждый процесс получит свое собственное адресное пространство, и вам придется посмотреть либо на:

  • некоторую форму IPC между процессамидля доступа к данным друг друга (таким как общая память или очереди сообщений).
  • еще более легкий вариант fork, который позволяет совместно использовать данные (включая, возможно, многопоточность).
2 голосов
/ 27 сентября 2011

Если вы имеете в виду обмен данными между этими двумя процессами, вы не можете. Вы можете сделать это с помощью системных API, таких как SharedMemory, Message Passing, Pipeline, Socket, ...

2 голосов
/ 27 сентября 2011

Если у вас есть два процесса, для обмена данными требуется межпроцессное взаимодействие: файл, канал или общая память.

0 голосов
/ 27 сентября 2011

Поскольку вы создали два процесса с помощью команды fork, оба процесса будут находиться в разных адресных пространствах, поэтому они будут обмениваться данными только через IPC, передачу сообщений, трубопровод, общую память и т. Д. В противном случае один процесс не сможет получить доступ к другим данным процесса, как это делают они. Обработать конкретные данные и аналогично потоки также имеют специфичные для потока данные

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