POSIX IPC에서 마지막-IPC는 이것 외에도 많다-으로 소개할 녀석은 메시지큐 이다. 간략히 뭐하는 녀석인지 설명하자면, ' 우선순위가 있는 줄서기 '랄까? 일단 Queue라는 말에서 이 녀석은 기본으로 먼저 던져넣은 메시지를 먼저 꺼내올 수 있다. 근데 가끔씩 긴급해 보내야할 메시지가 있을 수도 있을까...해서 메시지에 우선순위를 둘 수 있다. 그래서 때에 따라 우선순위가 높은 녀석이 나중에 큐에 들어갔는데도 먼저 나올 수 있다. 뭐 이런 녀석이다. 이 역시 SysV에서 뛰쳐나온 녀석이라서 SysV용 API가 있다. msgget으로 메시지큐 핸들을 얻어내어, msgsnd/msgrcv 등으로 적당히 메시지를 던지고 받을 수 있다. 이때 우선순위는 정수형으로 줄 수 있다. 다 사용한 메시지큐는 msgctl로 정리하여 OS에 반환할 수 있다. SysV 메시지큐 설명 끝. 역시나 내가 보고자 했던 것은 POSIX API. SysV 메시지큐 개념을 그대로 POSIX API에도 마련하였다. 메시지큐를 먼저 커널에 등록해야할 것이다. 이것은 이미 누누히 봤듯이 *_open 함수가 해줄 것 같다. 이 역시 mq_open함수가 그 일을 해준다. mqd_t mq_open(const char* name, int oflag, mode_t mode, struct mq_attr* attr); 뭐...뭔가 길다!? 반환값이 int가 아니라 mqd_t이긴 하지만, mqd_t 또한 int이다. 에러가 발생하면 (mqd_t)-1 을 반환한다. name, oflag, mode는 open함수 인자와 동일하다. name은 기존 shm_open, sem_open처럼 '/'로 시작하는 메시지큐 이름을 적는다. oflag에는 O_*로 시작하는 플래그를 OR연산으로 넣는다. oflag에 O_CREAT가 없으면 mode, attr 인자는 무시한다. mode는 파일을 생성할 때 접근제어이다. attr을 알아보기 위해 struct mq_attr을 살펴보자. struct mq...