2010-08-09 6 views
0

를 큐 에 의해 다른 프로세스에서 수신을 시도 :내가 성공적으로 다음 명령을 사용하여 메시지 큐를 만든

msgrcv(msgIdHareTurtle, (struct msgbuf *)&bufHareTurtle, sizeof(int), 0, IPC_NOWAIT); 

내 구조 bufHareTurtle은 다음과 같은 유형 인 :

typedef struct smsgbuf{ 
    long mtype; 
    unsigned int position; 
} smsgbuf; 

내 질문 : 성공 프로그램 (프로세스 모두가) 너무 실행하지만 예 2의 부호없는 정수를 보내고 때마다, 나는 항상 (후기 과정 IN) 수신 VALUE 무엇입니까 전송 AS 0 EVRYTIME. 누군가이 코드의 오류 또는 다른 오류의 가능성을 말해 줄 수 있습니까?

+0

이 2는 위치 변수의 값인 – higherDefender

+1

msgrcv와 msgsnd의 반환 값을 확인하고 mtype이 0보다 큰지 확인한다. –

+1

비 차단 읽기/쓰기 (IPC_NOWAIT) 정말로 메시지를 받았 는가? – nos

답변

0

문제가 동기화되었습니다. 사이에 삽입 된 수면 때문에 대기열로의 전송이 지연되었습니다. 나는 그것을 바로 잡고 오류가 사라졌다.

관련 문제