aix msgrcv시 에러
질문이 길겠네요 에러도 나고 궁금증도 있고 해서요
아래 소스에 msgrcv시 옵션에서 리눅스에선 MSG_NOERROR값만 사용했습니다.
당연히 메시지가 없을때는 block되어야 하는거 아닌가요? 몰랐는데 aix에서 계속적으로 block이 되길레 찾아봤더니 아래와 같이 IPC_NOWAIT 옵션을 줘야 block이 되지 않는것 같더라고요
제 소스는 block이 되면 안되거든요 메시지가 있던 없던 근데 IPC_NOWAIT옵션없이 리눅스에서 잘 사용했는데 aix에서 block문제가 생겨서 아래와 같이 IPC_NOWAIT 옵션으로 추가적으로 주었습니다.
그랬더니 이번에는 리턴값인 nRcvCount가 -1이 떨어지네요 분명 어제까지만 해도 정상적이었는데 오늘은 계속저긍로 -1이 떨어지 집니다.
이유를 아시는 분 부탁드립니다. 누구든 그렇겠지만 제가 워낙에 일정에 시달려서요
정리해서 다시 질문드리면
1. 리눅스에선 IPC_NOWAIT 옵션 없이도 block없이 잘돌아간다. 리눅스 소스가 틀렸는지요? aix에선 block이 걸립니다.
2. aix에서 IPC_NOWAIT 옵션을 주었더니 계속적으로 -1이 떨어진다. 왜 그럴까요? aix소스는 아래와 같습니다.
nRcvCount = msgrcv(nQueueId,
(struct msgbuf *)pQMsg, QUEUE_LEN_256, pQMsg->mtype, MSG_NOERROR|IPC_NOWAIT);
댓글 달기