Главная » 2017 » Ноябрь » 18 » man 7 svipc
21:41
man 7 svipc

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


svipc - механизмы межпроцессного взаимодействия System V



ОБЗОР


#include <sys/msg.h>
#include <sys/sem.h>
#include <sys/shm.h>



ОПИСАНИЕ


Данная справочная страница описывает реализацию механизмов межпроцессного
взаимодействия (IPC) System V в Linux: очереди сообщений, наборы семафоров и
сегменты разделяемой памяти. В дальнейшем под словом ресурс будет
подразумеваться экземпляр одного из этих механизмов.

Права доступа к ресурсу
Для каждого ресурса система использует общую структуру типа struct ipc_perm,
хранящую необходимую информацию о правах для проведения IPC-операции. Структура
ipc_perm включает следующие поля:

struct ipc_perm {
uid_t cuid; /* ID пользователя создателя */
gid_t cgid; /* ID группы создателя */
uid_t uid; /* ID пользователя владельца */
gid_t gid; /* ID группы владельца */
unsigned short mode; /* права для чтения-записи */
};

Поле mode из структуры ipc_perm определяет в нижних 9 битах права доступа к
ресурсу для вызвавшего системный вызов IPC процесса. Права определены следующим
образом:

0400 Чтение пользователем
0200 Запись пользователем
0040 Чтение группой
0020 Запись группой
0004 Чтение остальными
0002 Запись остальными

Биты 0100, 0010 и 0001 (биты запуска) системой не используется. Кроме того,
«запись» для набора семафоров на самом деле означает «изменение».

Тот же системный заголовочный файл определяет следующие символические константы:

IPC_CREAT Создать запись, если ключ не существует.

IPC_EXCL Завершиться ошибкой, если ключ существует.

IPC_NOWAIT Ошибка, если запрос должен ждать.

IPC_PRIVATE Частный ключ.

IPC_RMID Удалить ресурс.

IPC_SET Установить параметры ресурса.

IPC_STAT Получить параметры ресурса.

struct msqid_ds {
struct ipc_perm msg_perm;
msgqnum_t msg_qnum; /* в очереди не сообщений */
msglen_t msg_qbytes; /* макс. байт в очереди */
pid_t msg_lspid; /* PID последнего вызова msgsnd(2) */
pid_t msg_lrpid; /* PID последнего вызова msgrcv(2) */
time_t msg_stime; /* время последнего msgsnd(2) */
time_t msg_rtime; /* время последнего msgrcv(2) */
time_t msg_ctime; /* последнее время изменения */
};

msg_perm Структура ipc_perm, определяющая права доступа к очереди сообщений.

msg_qnum Число сообщений, находящихся в данный момент в очереди сообщений.

msg_qbytes Максимальная длина сообщения в байтах, разрешенная в очереди сообщений.

msg_lspid ID процесса, выполнившего последний системный вызов msgsnd(2).

msg_lrpid ID процесса, выполнившего последний системный вызов msgrcv(2).

msg_stime Время последнего вызова msgsnd(2).

msg_rtime Время последнего вызова msgrcv(2).

msg_ctime Время последнего системного вызова, изменившего поля структуры
msgid_ds.

Наборы семафоров
Набор семафора уникально идентифицируется положительным целым (semid) и имеет
связанную структуру типа struct semid_ds, определенную в <sys/sem.h> и содержащую
следующие поля:

struct semid_ds {
struct ipc_perm sem_perm;
time_t sem_otime; /* время последней операции */
time_t sem_ctime; /* время последнего изменения */
unsigned long sem_nsems; /* число семафоров в наборе */
};

sem_perm Структура ipc_perm, определяющая права доступа к набору семафоров.

sem_otime Время последнего системного вызова semop(2).

sem_ctime Время последнего системного вызова semctl(2), который изменил поле
указанной структуры или один из семафоров, принадлежащих набору.

sem_nsems Число семафоров в наборе. Каждый семафор описывается неотрицательным
целым числом от 0 до sem_nsems-1.

Семафор является структурой данных типа struct sem, содержащие следующие поля:

struct sem {
int semval; /* значение семафора */
int sempid; /* PID последнего изменившего процесса */
};

struct shmid_ds {
struct ipc_perm shm_perm;
size_t shm_segsz; /* размер сегмента */
pid_t shm_cpid; /* PID создателя */
pid_t shm_lpid; /* PID последней операции */
shmatt_t shm_nattch; /* число текущих подключений */
time_t shm_atime; /* время последнего подключения */
time_t shm_dtime; /* время последнего отключения */
time_t shm_ctime; /* время последнего изменения */
};

shm_perm Структура ipc_perm, описывающая права доступа к сегменту общей памяти.

shm_segsz Размер в байтах сегмента общей памяти.

shm_cpid ID процесса, создавшего сегмент общей памяти.

shm_lpid ID последнего процесса, выполнившего системный вызов shmat(2) или
shmdt(2).

shm_nattch Количество текущих подключений для данного сегмента общей памяти.

shm_atime Время последнего системного вызова shmat(2).

shm_dtime Время последнего системного вызова shmdt(2).

shm_ctime Время последнего системного вызова shmctl(2), изменившего shmid_ds.

Пространства имён IPC
Обсуждение связи объектов System V IPC с пространствами IPC смотрите в
namespaces(7).



СМОТРИТЕ ТАКЖЕ


ipcmk(1), ipcrm(1), ipcs(1), lsipc(1), ipc(2), msgctl(2), msgget(2), msgrcv(2),
msgsnd(2), semctl(2), semget(2), semop(2), shmat(2), shmctl(2), shmdt(2),
shmget(2), ftok(3), namespaces(7)



Категория: (7) Различные описания, соглашения и прочее | Просмотров: 488 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar