mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

SHMGET(2)                                             SHMGET(2)

НАЗВАНИЕ 
        shmget - получение идентификатора разделяемого сегмента
        памяти

СИНТАКСИС 
        #include 
        #include 
        #include 
        
        int shmget (key, size, shmflg)
        key_t key;
        int size, shmflg;

ОПИСАНИЕ 
        Системный вызов shmget возвращает идентификатор  разде-
        ляемого сегмента памяти, ассоциированный с ключом key.

        Идентификатор и ассоциированные с ним структура  данных
        и разделяемый сегмент размером  по  меньшей  мере  size
        байт [см. intro(2)] создаются для ключа key в следующих
        случаях:

        1.   Значение аргумента key равно IPC_PRIVATE.

        2.   Ключ key пока еще не имеет ассоциированного с  ним
             идентификатора и выражение  (shmflg  &  IPC_CREAT)
             истинно.

        При создании структуры данных, ассоциированной с  новым
        идентификатором разделяемого сегмента памяти,  выполня-
        ются следующие инициализирующие действия:

        1.   Значения   полей   shm_perm.cuid,    shm_perm.uid,
             shm_perm.cgid и shm_perm.gid устанавливаются  рав-
             ными действующему идентификатору  пользователя  и,
             соответственно, действующему идентификатору группы
             вызывающего процесса.

        2.   Младшие 9 бит поля  shm_perm.mode  устанавливаются
             равными 9 младшим битам аргумента shmflg; значение
             поля  shm_segsz  устанавливается  равным аргументу
             size;

        3.   Значения полей shm_lpid, shm_nattch,  shm_atime  и
             shm_dtime устанавливаются равными 0.

        4.   Значение поля shm_ctime устанавливается равным те-
             кущему времени.

        Системный вызов shmget завершается неудачей,  если  вы-
        полнено хотя бы одно из следующих условий:

        [EINVAL]    Значение аргумента size меньше минимального
                    или больше максимального значения, принятых
                    в системе.

        [EACCES]    Для ключа key уже существует  идентификатор
                    разделяемого сегмента,  но  не  могут  быть
                    предоставлены права доступа [см. intro(2)],
                    определенные в 9  младших  битах  аргумента
                    shmflg.

        [EINVAL]    Для ключа key уже существует  идентификатор
                    разделяемого сегмента, но  размер  сегмента
                    меньше значения аргумента size  и  значение
                    size не равно нулю.

        [ENOENT]    Для ключа key не  существует  идентификатор
                    разделяемого сегмента и выражение (shmflg &
                    IPC_CREAT) ложно.

        [ENOSPC]    Идентификатор не создается из-за превышения
                    максимального разрешаемого  системой  коли-
                    чества идентификаторов разделяемых  сегмен-
                    тов.

        [ENOMEM]    Идентификатор и ассоциированный с ним  раз-
                    деляемый сегмент памяти не создаются  из-за
                    отсутствия достаточного количества памяти.

        [EEXIST]    Для ключа key уже существует  идентификатор
                    разделяемого сегмента и выражение  ((shmflg
                    & IPC_CREAT) & (shmflg & IPC_EXCL))  истин-
                    но.

СМ. ТАКЖЕ 
        intro(2), shmctl(2), shmop(2).

ДИАГНОСТИКА 
        При успешном завершении системного вызова  возвращается
        неотрицательное целое число - идентификатор разделяемо-
        го сегмента памяти. В случае ошибки возвращается -1,  а
        переменной errno присваивается код ошибки.

ПРИМЕЧАНИЯ 
        Необходимо явно удалять разделяемый сегмент памяти пос-
        ле того, как удаляется последняя ссылка на него.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк