shmat, shmdt (2)
   присоединение / отсоединение общего сегмента памяти  

Синтаксис
 
    # include <sys/types.h>
    # include <sys/shm.h>

    void *shmat ( int shmid, void *shmaddr, int shmflg )
    int shmdt (  void *shmaddr )

Описание
  shmat присоединяет разделяемый сегмент памяти, определяемый идентификатором shmid к адресному пространству процесса. Если значение аргумента shmaddr равно нулю, то сегмент присоединяется по виртуальному адресу, выбираемому системой. Если значение аргумента shmaddr ненулевое, то оно задает виртуальный адрес, по которому сегмент присоединяется.

Если в параметре shmflg указано SHM_RDONLY, то присоединенный сегмент будет доступен только для чтения.

При выполнении системного вызова fork присоединенные сегменты наследуются дочерним процессом. При выполнении системных вызовов exec и exit присоединенные сегменты отсоединются, но не уничтожаются. shmdt отсоединяет от адресноог пространства процесса разделяемый сегмент памяти, присоединенный ранее по виртуальному адресу shmaddr.

Возвращаемое значение
  При успешном завершении shmat возвращается виртуальный адрес присоединенного сегмента, а shmdt возвращает 0. В случае ошибки оба вызова возвращают -1 и устанавливают код ошибки в errno.

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


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