При использовании Shmget у меня возникают проблемы с использованием размеров более 4 байт.
test_shmid = shmget(foo_key, 4, IPC_CREAT | 0666);
и ниже?
Нет проблем.
test_shmid = shmget(foo_key, 5, IPC_CREAT | 0666);
и выше?
Возвращает -1 (не удается) с ошибкой: Недопустимый аргумент
Я подумал, что это может быть проблема с SHMAX, но после исследования я обнаружил: kern.sysv.shmmax:4194304
так что я не верю, что это так.Я также посмотрел на SHMSEG, но исключил это, так как я могу создать несколько сегментов размером 4, но это нормально, только когда я добавляю один из размеров 5 или выше.
Сегмент памяти, уже связанный с данным ключом, похоже, не является проблемой, так как я протестировал несколько случайных новых ключей, а также повторно использовал ключи, только изменяя параметр размера и, как и ожидалось,Сегмент создается очень хорошо, когда его размер меньше 5.
Используя OSX 10.13.6 на 64-битной архитектуре и компилируя с GCC, любые советы о том, где искать дальше или понять, что может пойти не так, будут в значительной степениоценили.