Я в Linux 2.6.У меня есть среда, в которой 2 процесса имитируют (используя общую память) обмен данными через простую реализацию режима передачи сообщений.
У меня есть клиентский процесс (разветвленный от родителя, который является сервером), которыйзаписывает структуру (сообщение) в область отображения памяти, созданную (после разветвления) с помощью:
message *m = mmap(NULL, sizeof(message), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0)
Этот указатель затем записывается в очередь (в форме связанного списка)в другую область разделяемой памяти, которая является общей для сервера и клиентского процесса (потому что, если он был создан до fork с тем же кодом выше).Затем эта область читается сервером, который получает указатель на сообщение и обрабатывает его.
Проблема в том, что * m создается после fork () и когда процесс сервера пытается получить доступ к указанному месту в памятия получаю ошибку сегментации.Можно ли присоединить эту область памяти к разветвлению POST сервера после того, как клиент его создаст?
ПРИМЕЧАНИЕ. Я не хочу отображать указатель на сообщение перед разветвлением (а затем делиться им досервер), потому что я обычно не знаю, сколько сообщений клиент хочет отправить на сервер, а также может быть более одного клиентского процесса, поэтому я хотел бы создать новый блок разделяемой памяти только тогда, когда клиенту нужноотправить сообщение и распаковать его после того, как сервер получил это сообщение.
ПРИМЕЧАНИЕ.путь.
Заранее спасибо!