리눅스에서 메세지큐의 사용에 대해

d00d00의 이미지

리눅스에서 Sysv IPC장치 중 하나인 메세지큐를 사용하려고 합니다.

처음 써보는거라 테스트를 해보려고 아래같은 코드를 작성했습니다.

int main(){
int msq_id = msgget(IPC_PRIVATE, IPC_CREAT);
cout << msq_id << endl;
}

보시다시피 이 코드를 실행하면 생성된 메세지큐의 id를 출력하는데요.
프로그램을 여러번 반복해서 실행하면 처음 몇번은 키가 잘 출력되다가, 언제부턴가 -1을 출력하기 시작합니다.

msgctl로 제거를 안해주긴 했지만, 20~30번도 안 실행했는데요. 커널에 생성될 수 있는 개수가 정해져 있는건가요?

또, 메세지큐에 들어갈 수 있는 메세지의 최대개수는 정확히 몇개인가요?

prether의 이미지

디폴트가 16개이고요
/proc/sys/kernel/msgmni
값을 조정하세여.

/***************************************
Being the one is just like being in love.
***************************************/

/***************************************
Being the one is just like being in love.
***************************************/

d00d00의 이미지

큐에 메세지는 몇개나 넣을 수 있나요? 메모리가 허용하는 한도?

네트웍 패킷을 인큐하고 디큐하면서 처리하는 용도로 충분할지 -_-

d00d00의 이미지

같은 디렉토리에 msgmax라는 파일이 있네요. 이게 최대갯수군요.