Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 706 из 715

Структура shmid_ds определена следующим образом:

struct shmid_ds {

  struct ipc_perm shm_perm; /* структура, описывающая права доступа */

  int shm_segsz; /* размер сегмента */

  int * pad1; /* используется системой */

  ushort shm_lpid; /* идентификатор процесса, связанного с последней операцией над областью */

  ushort shm_cpid; /* идентификатор процесса-создателя */

  ushort shm_nattch; /* количество присоединений к процессам */

  short pad2; /* используется системой */

  time_t shm_atime; /* время последнего присоединения */

  time_t shm_dtime; /* время последнего отсоединения */

  time_t shm_ctime; /* время последнего внесения изменений */

};

Операции:

IPC_STAT прочитать в буфер buf содержимое заголовка области, ассоциированной с идентификатором id

IPC_SET установить значения переменных shm_perm.uid, shm_perm.gid и shm_perm.mode (9 младших разрядов структуры) в заголовке области в соответствии с содержимым буфера buf

IPC_RMID удалить из системы область разделяемой памяти, ассоциированной с идентификатором id

shmget

#include ‹sys/types.h›

#include ‹sys/ipc.h›

#include ‹sys/shm.h›

shmget(key, size, flag)

key_t key;

int size, flag;

Функция shmget обращается к области разделяемой памяти или создает ее. Параметр size задает размер области в байтах. Параметры key и flag имеют тот же смысл, что и в функции msgget.

shmор

#include ‹sys/types.h›

#include ‹sys/ipc.h›

#include ‹sys/shm.h›

shmat(id, addr, flag)

int id, flag;

char *addr;

shmdt(addr)

char *addr;

Функция shmat присоединяет область разделяемой памяти, ассоциированную с идентификатором id, к адресному пространству процесса. Если параметр addr имеет нулевое значение, ядро само выбирает для присоединения области подходящий адрес. В противном случае оно пытается присоединить область, используя в качестве значение параметра addr в качестве адреса. Если в параметре flag установлен бит SHM_RND, ядро в случае необходимости округляет адрес. Функция shmat возвращает адрес, по которому область присоединяется фактически. Функция shmdt отсоединяет область разделяемой памяти, присоединенную ранее по адресу addr.

signal

#include ‹signal.h›

signal(sig, function)

int sig;

void (*func)();

Функция signal дает текущему процессу возможность управлять обработкой сигналов.

|< Пред. 704 705 706 707 708 След. >|

Java книги

Контакты: [email protected]