SHMCTL(2)
НАЗВАНИЕ
shmctl - операции управления разделяемыми сегментами памяти
СИНТАКСИС
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
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 присваивается код ошибки.
ПРИМЕЧАНИЯ
Необходимо явно удалять разделяемый сегмент памяти после того, как удаляется последняя ссылка на него.
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
Новости мира IT:
- 25.07 - В России выросла популярность отечественных облачных хранилищ, хотя молодёжь предпочитает иностранные
- 25.07 - Microsoft добавила сгенерированные ИИ сводки в результаты поиска Bing
- 25.07 - Apple выпустила веб-версию своего картографического сервиса
- 23.07 - Google передумала отказываться от сторонних cookie в Chrome, но обещает повысить конфиденциальность
- 23.07 - Аудитория Telegram достигла 950 миллионов пользователей в месяц
- 23.07 - Alphabet провалила сделку по поглощению Wiz за $23 млрд — стартап счёл предложенные условия унизительными
- 23.07 - Intel признала вину в нестабильности Raptor Lake, но уже знает как всё исправить
- 18.07 - Еврокомиссия выяснит, не мешает ли конкурентам Samsung наличие ИИ-модели Gemini Nano в Galaxy S24
- 18.07 - Huawei будет внедрять искусственный интеллект в тяжёлое машиностроение
- 18.07 - В Китае создали сверхлёгкий дрон, который будет летать, пока светит Солнце
- 18.07 - Дефицит ИИ-чипов сохранится до 2026 года, прогнозируют в TSMC
- 18.07 - Google стала показывать меньше ответов ИИ в поиске после серии «странных» ответов
- 16.07 - Oppo и Ericsson подписали соглашение о перекрёстном лицензировании в сфере сетей 5G
- 16.07 - Акции Apple достигли исторического максимума благодаря ИИ
- 16.07 - Nvidia столкнулась с антимонопольным расследованием во Франции — компании грозит крупный штраф
- 16.07 - ИИ и глобальные амбиции: Аркадий Волож рассказал, чем займётся зарубежная часть «Яндекса» после разделения
- 16.07 - Разработку российской консоли оценили всего в 1 млрд рублей, но в целом денег понадобится куда больше
- 16.07 - Yandex закрыл сделку по продаже «Яндекса»
- 10.07 - Представлен релиз Firefox 128
- 10.07 - Доступна платформа OpenSilver 3.0, продолжающая развитие технологии Silverlight
Архив новостей
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|