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

Златоуст.Ru

 

 

SHMCTL(2)                                             SHMCTL(2)

НАЗВАНИЕ 
        shmctl - операции  управления  разделяемыми  сегментами
        памяти

СИНТАКСИС 
        #include 
        #include 
        #include 
        
        int shmctl (shmid, cmd, buf)
        int shmid, cmd;
        struct shmid_ds *buf;

ОПИСАНИЕ 
        Системный вызов shmctl позволяет выполнять операции уп-
        равления разделяемыми сегментами памяти. Операция опре-
        деляется значением аргумента cmd, которое  должно  быть
        одним из следующих:

        IPC_STAT 
             Поместить текущие значения полей структуры данных,
             ассоциированной  с  идентификатором   разделяемого
             сегмента shmid, в структуру, на которую  указывает
             аргумент  buf.  Содержимое  структуры  описано   в
             intro(2). {Требуется право на чтение.}

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

                shm_perm.uid
                shm_perm.gid
                shm_perm.mode  /* Только младшие 9 бит */

             Эта команда может  выполняться  только  процессом,
             который имеет действующий идентификатор  пользова-
             теля, равный либо идентификатору  суперпользовате-
             ля,   либо   значению   поля   shm_perm.cuid   или
             shm_perm.uid в структуре, ассоциированной с  иден-
             тификатором shmid.

        IPC_RMID 
             Удалить из системы идентификатор разделяемого сег-
             мента, заданный  аргументом  shmid,  ликвидировать
             сегмент и ассоциированную с ним структуру  данных.
             Эта команда может  выполняться  только  процессом,
             который имеет действующий идентификатор  пользова-
             теля, равный либо идентификатору  суперпользовате-
             ля,   либо   значению   поля   shm_perm.cuid   или
             shm_perm.uid в структуре данных, ассоциированной с
             идентификатором shmid.

        SHM_LOCK 
             Удержать в памяти разделяемый сегмент,  специфици-
             рованный идентификатором shmid. Эта команда  может
             выполняться только процессом, который имеет дейст-
             вующий идентификатор пользователя, равный  иденти-
             фикатору суперпользователя.

        SHM_UNLOCK 
             Освободить разделяемой сегмент памяти,  специфици-
             рованный идентификатором shmid. Эта команда  может
             выполняться только процессом, который имеет дейст-
             вующий идентификатор пользователя, равный  иденти-
             фикатору суперпользователя.

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

        [EINVAL]    Значение аргумента shmid не  является  кор-
                    ректным идентификатором  разделяемого  сег-
                    мента.

        [EINVAL]    Некорректное значение аргумента cmd,  опре-
                    деляющее команду.

        [EACCES]    Значение аргумента cmd равно IPC_STAT, но у
                    вызывающего процесса нет прав на выполнение
                    операции чтения [см. intro(2)].

        [EPERM]     Значение аргумента cmd равно  IPC_RMID  или
                    IPC_SET, а действующий идентификатор  поль-
                    зователя вызывающего процесса не  равен  ни
                    идентификатору суперпользователя, ни значе-
                    нию поля shm_perm.cuid или  shm_perm.uid  в
                    структуре данных, ассоциированной с иденти-
                    фикатором shmid.

        [EPERM]     Значение аргумента cmd равно  SHM_LOCK  или
                    SHM_UNLOCK,  а  действующий   идентификатор
                    пользователя вызывающего процесса не  равен
                    идентификатору суперпользователя.

        [EFAULT]    Аргумент buf указывает за пределы  отведен-
                    ного процессу адресного пространства.

        [ENOMEM]    Значение аргумента cmd равно SHM_LOCK и нет
                    достаточного объема памяти в системе.

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

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

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



 

 

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

Мое резюме

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

Ресурсы сети

Фотоальбом

 

 

 

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