shmctl (2)
   управляющие операции над семафорами  

Синтаксис
 
    # include <sys/ipc.h>
    # include <sys/sem.h>

    int shmctl  (int  shmid, int cmd, struct shmid_ds *buf)    

Описание
  shmctl выполняет управляющие операции над разделяемым сегментом памяти. Сегмент задается аргументом shmid - идентификатором сегмента. Выполняемая операция задается аргументом cmd. Аргумент buf служит представления информации о состоянии сегмента:
            struct shmid_ds {
                 struct    ipc_perm shm_perm;  /* права доступа */
                 int  shm_segsz;          /* размер сегмента (байт) */
                 time_t    shm_atime;          /* время последнего присоединения */
                 time_t    shm_dtime;          /* время последнего отсоединения */
                 time_t    shm_ctime;          /* время последнего изменения */
                 unsigned short shm_cpid; /* pid создателя */
                 unsigned short shm_lpid; /* pid процесса, последнего оперировавшего с сегментом */
                 short     shm_nattch;         /* число текущих подключений */
                 /* следующая информация недоступна */
                 unsigned short   shm_npages;  /* размер (страниц) */
                 unsigned long   *shm_pages;
                 struct shm_desc *attaches;    /* дескрипторы подключений */
            };
            struct ipc_perm
            {
              key_t  key;
              ushort uid;   /* euid и egid владельца */
              ushort gid;
              ushort cuid;  /* euid и egid создателя */
              ushort cgid;
              ushort mode;  /* младшие 9 бит доступа */
              ushort seq;   /* номер последовательности */
            };

Операции, выполняемые системным вызовом shmctl, следующие:
 IPC_STAT  Копировать информацию из структуры сегмента в структуру, на которую указывает buf.
 IPC_SET  Присвоить полям структуры ipc_perm соответствующие значения, находящиеся в структуре, на которую указывает buf.
 IPC_RMID  Удалить сегмент.

Возвращаемое значение
  При успешном завершении возвращает 0. В случае ошибки возвращается -1 и устанавливается код ошибки d errno.

См.также
  shmat, shmget.


Список системных вызовов