리눅스C IPC(공유메모리, 메시지큐) 질문입니다.

amabile의 이미지

안녕하세요.

두 프로세스간 IPC기법으로 shared memory, message queue를 섞어서 데이터를 교환하는 프로그램을 만들고 있습니다.

그런데 클라이언트단 메세지큐 수신부에서 문제가 발생합니다.
아래는 소스입니다.
.
.
while(1)
{
msgrcv (id, (void *)&msg, sizeof(struct message), msg.type, 0);
... // 에러검출 생략

fprintf(stdout, "%s \n", shm[msg.num].data);
}
.
.
메시지큐로 받은 인덱스값으로 공유메모리구조체배열의 멤버값을 읽는 과정입니다.
각 문장에는 문법적, 논리적 오류는 없습니다. 하지만 두 문장을 같이 쓰면 main함수가 리턴됩니다.

도움 부탁드립니다.