Как да разрешите msgget: Няма останало място при грешка на устройството?

Пиша IPC приложение, използвайки опашки от съобщения. Докато използвам функцията msgget() за получаване на опашка за съобщения, получавам тази грешка.

Заявените операции не изискват много място на устройството и също трябва да има място.

Някакви идеи. Благодаря ви предварително


person Alex Xander    schedule 12.10.2009    source източник


Отговори (1)


ENOSPC от msgget показва, че е достигнат максималният брой опашки за съобщения за цялата система.

Може да сте в състояние да конфигурирате това ограничение - например в Linux можете да промените /proc/sys/kernel/msgmni.

person caf    schedule 12.10.2009
comment
Не вярвам, това е административно ограничен ресурс. echo "Please increase number of message queues." | mail root@localhost е може би най-доброто, което можете да направите ;) - person caf; 12.10.2009
comment
@Alex - ако вашата машина изобщо не е конфигурирана да поддържа опашки за съобщения или няма достатъчно опашки за съобщения, някой трябва да я преконфигурира. Този човек ще се нуждае от root права. Ако не сте вие, говорете с администратора. Или използвайте нещо различно от msgget(). - person Jonathan Leffler; 12.10.2009
comment
Благодаря на всички! Получих root достъп и редактирах /proc/sys/kernel/msgmni. - person Alex Xander; 13.10.2009
comment
Имайте предвид, че промените в sysctls, направени чрез /proc/, не преживяват рестартиране - за да ги направите постоянни, добавете ред към /etc/sysctl.conf като kernel.msgmni = 2000 - person caf; 13.10.2009