Linux에서 mq_open()시에 ENOMEM 조치 방법을 알고 싶습니다.
글쓴이: dreampia / 작성시간: 월, 2014/02/03 - 5:02오후
struct mq_attr qattr;
qattr.mq_maxmsg = 120;
qattr.mq_msgsize = 16072;
mq_open(.., .., .., &qattr);
mq_open(.., .., .., &qattr);
mq_open(.., .., .., &qattr);
mq_open(.., .., .., &qattr);
mq_open(.., .., .., &qattr);
위와 같이 호출하면 시작하자마자 errno==12(ENOMEM) 에러가 발생합니다.
mq_maxmsg = 10;으로 하면 중간쯤에서 mq_maxmsg = 1; 로 하면 에러없이 잘 넘어가구요..
어디선가 POSIX 메시지 큐에 대한 size를 제한 하고 있는 것 같은데
어떤 값들을 확인해 봐야 할까요?
/proc/sys/fs/mqueue에서 msg_max=120, msgsize_max=16384, queues_max=256으로 세팅했습니다.
Forums:
Google says: probably
Google says: probably RLIMIT_MSGQUEUE?
http://linux.die.net/man/7/mq_overview
http://forums.fedoraforum.org/archive/index.php/t-260347.html
감사합니다.
집에서 푹 자고 나서 생각해 보니 QUEUE size였고..
제한은 limits.conf에서였는데..
그래서 /etc/security/limits.conf 에서 msgqueue 크기를 엄청크게 늘려놨더니 잘 생성되네요.
>/dev/null 2>&1
댓글 달기