XSI IPC
.pdfXSI IPC
4. System V IPC
XSI IPC
●Очереди сообщений
●Разделяемая память
●Семафоры
Зачем?
Рассмотренные ранее средства межпроцессного взаимодействия не позволяют организовать обмен между процессами выполняющимися в различное время
Идентификаторы и ключи
●Каждому XSI IPC соответствует идентификатор в системе
●Идентификатор - внутренне имя IPC
●В качестве внешнего идентификатора выступает специальный ключ, который используется в системных вызовах
Ключ
<sys/types.h>
key_t - длинное целое со знаком
Ядро выполняет преобразование ключа в идентификатор
Задание ключа
#include <sys/ipc.h>
key_t ftok(const char *path, int id);
1.Возможны коллизии с другими разработчиками
2.Параметр id позволяет задавать несколько ipc связанных с один путем в ФС
Файл необходим только для генерации ключа!
Разделяемая память
Каждый процесс существует в своем собственном изолированном адресном пространстве
Разделяемая память позволяет преодолеть это ограничение
Разделяемая память
Поведение при fork, exec
fork:
Разделяемая память наследуется
exec:
Разделяемая память исключается
Создание РП
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);