2014-09-24 2 views
1

Я читал об общей памяти в POSIX и придумал эту функцию, чтобы установить с разделяемой памятьюКак процессы сообщают о параметрах IPC?

segment id = shmget(IPC_PRIVATE, size, S_IRUSR | S_IWUSR); 

IPC_PRIVATE используется для создания нового сегмента для процесса. Теперь мой вопрос заключается в том, как процесс на другом конце знает, что segment_id связывается? Если какой-либо инициирующий процесс отправляет ему информацию, то как это сделать, не инициализировав механизм для этого?

Когда я больше об этом читал, я узнал, что процесс должен присоединяться к области разделяемой памяти. Но для этого требуется идентификатор разделяемой памяти. Как это получается?

ответ

1

Говоря в контексте модели server-client, это так.

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

Ключ IPC_PRIVATE гарантирует, что сервер создаст новую структуру IPC.

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

Существуют разные способы для клиента и сервера рандеву в той же структуре IPC .

+0

Любая идея о том, как это происходит в одной и той же системе? –

+0

А также не могли бы вы рассказать любой способ рандеву в той же структуре IPC? –

+0

Вышеприведенное описание также относится к той же системе. Модель Server-client - это общий термин. – deimus

Смежные вопросы