메시지 큐 (message queue) 사용 관련 질문 드립니다.

kgykingdom의 이미지

현재는 다수의 프로세스가 하나의 큐로 통신을 수행하는데 구조는 아래와 같습니다.

typedef struct _message {
    long type;
    unsigned short msg_type;
    unsigned short msg_len;
    unsigned char *value;
} message;

데이터가 가변이라 먼저 type, msg_type, msg_len 을 먼저 queue 에 write 하고, type, value 를 write 합니다.

main()
{
...
  write_queue(qid, msg, 4, type);
 
  write_queue(qid, msg->value sizeof(msg->value), type);
...
}

대충 이런식 쓰고, msg_type, msg_len 을 읽어서 msg_len 만큼 한번 더 읽어 오는 방식으로 사용하고 있는데,

이렇게 말고 가변 메시지를 한번에 읽어 올 수 있도록 현재 메시지 큐에 읽어야할 메시지의 크기를 알 수 있는 방법이 없나요?

간단히 묻자면 프로세스 A 가 프로세스 B 에게 보낼 100 bytes 의 메시지+데이터를 큐에 쓴다면 프로세스 B 가 큐에 현재 100 bytes 의 읽어

올 메시지가 있다는 사실을 확인할 방법이 있는지 알고 싶습니다. (2번 읽을걸 1번만 읽고 싶어서)

사실 제가 알기로는 없는데... 그래도 몰라 이렇게 질문 드립니다. ^^;;