데몬을 띄워서 ipc사이에 message queue로
연결을 할려고 하는데..
message queue를 select의 read부분에 세트를 하고
다른 프로그램(message queue로 연결된)에서 write를 하는데도..
블럭이 안풀리네요..
데몬에서 코드는..
Serv_Qid = CreatMQ(QKEY); //메세지 큐 생성
FD_ZERO(&Serv_fds); //select 준비
FD_SET(Serv_Qid,&Serv_fds); //메세지 큐 select 에 등록
if(select(2,&Serv_fds,(fd_set *)0,(fd_set *)0,(struct timeval*)0)<0)
{
write(1,"select error",13); //에러 처리
exit(1);
}
write(1,buf2,sizeof(buf2)); //테스트 코드
if(FD_ISSET(Serv_Qid,&Serv_fds))
{
//write(1,buf2,sizeof(buf2)); //테스트코드
fmQid = PopMQ(QKEY,SERV_PID,&rcvQ); //메세지 큐에서 빼기
write(1,rcvQ,sizeof(rcvQ)); //받은 데이터 파일출력
write(1,rcvQ.text,(sizeof(rcvQ.text)+1));//상동
write(1,rcvQ.code,(sizeof(rcvQ.code)+1));//상동
}
필요 없는 부분은 삭제를 했고요..
대충 위에 코드 형식인데..
일단 저 코드는 루프를 돌고 있습니다.
궁금한건 메세지 큐는 select 상에서 read 대상이 안되느냐
입니다..
여러가지 테스트를 해봤는데..
안되는것같아 이렇게 질문을 드립니다..
여러 고수분들 도움을 부탁드립니다..
그럼 즐거운 하루 되세요..
p.s 메세지 큐의 함수들은 확인을 했습니다..
데몬이 아닌 경우는 와 select를 안쓴 경우에는
이상없이 input output 다 됩니다..