대기열을 사용하는 2 개의 프로세스간에 통신을 구현 중입니다. 문제는 mq_receive 함수를 호출 할 때이 오류가 발생한다는 것입니다. Message too long.mq_receive : 메시지가 너무 깁니다.
나는은 다음 수행 한 : 나는 크기 값을 인쇄하는 경우
struct mq_attr attr;
long size = attr.mq_msgsize;
.... // initializing the queue "/gateway"
int rc = mq_receive(gateway, buffer, size, &prio);
, 내가 얻을 크기 = 1, 나는 같은 크기이지만 (같은 메커니즘에 의해 있어요) 다른 프로그램에서 인쇄 할 때 동안, I (-1217186280) ...
어떻게하면이 오류를 해결할 수 있습니까? ... size = 1 인 동안 "메시지가 너무 길다"라고 말하는 것이 맞지만 왜 1입니까?
P. 나는 또한 넣어려고 :
int rc = mq_receive(gateway, buffer, sizeof(buffer), &prio);
결과가 없습니다.
실제 크기를 얻기 위해 mq_getattr()을 호출하고 있습니까? 그렇지 않으면 구조체의 위치에서 메모리에있는 모든 정크를 참조합니다. – Duck
큐를 작성한 곳의 코드를 게시하고 큐에서 읽으려고하십시오. – Duck