Меня действительно интересует полное имя флага IPC_EXCL, когда я использую функцию shmget в Linux. Я знаю, что он используется с IPC_CREAT, чтобы гарантировать сбой, если сегмент разделяемой памяти уже существует. Мы будем благодарны за любой ответ.
Предположение Халка в комментариях к вопросу верное: «EXCL» - это сокращение от «эксклюзив». Это не очевидно из спецификации самого IPC_EXCL (цитируется https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_ipc.h.html):
IPC_EXCL Ошибка, если ключ существует.
... но если вы знаете, что флаг был назван по аналогии с open(2) flag O_EXCL, то это очевидно из спецификация , что флаг (цитируется https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html):
open(2)
O_EXCL
O_EXCL Флаг исключительного использования.
Это означает эксклюзивный . IPC_CREAT|IPC_EXCL отражает O_CREAT|O_EXCL (используется с open) в том смысле, что он гарантирует, что вызывающий поток либо станет эксклюзивным создателем объекта (или файла) IP C (межпроцессное взаимодействие), либо функция завершится с ошибкой с EEXIST.
IPC_CREAT|IPC_EXCL
O_CREAT|O_EXCL
open
EEXIST