socket && message_q
글쓴이: gusdo2000 / 작성시간: 화, 2005/03/29 - 12:26오후
socket && message_q를 select로 주시하게 하다가 둘중 하나에 이벤트가 발생하면 그것에 해당하는 fd를 처리하게 만드는게 가능한가요?
며칠동안 헤메다 결국 근원적인 문제를 생각해 보게 되었습니다.
만약 안된다면.. ㅜㅜ
예를들어 서버A와 서버B가 있습니다.
이 두 서버는 메세지 큐로 연결이 되어 있습니다.
서버A와 서버B는 select()로 메세지 큐와 소켓을 주시하고 있습니다.
서버A에 클라이언트가 접속해 메세지를 보내면,
서버A는 그것을 read()하고, 메세지 큐에 send()합니다.
그럼.. 서버 B는 select()로 메세지 큐에 이벤트가 발생한 것을 알고 rcv()합니다.
문제는 서버B가 메세지 큐에 이벤트가 발생한 것을 알지 못합니다.그래서 당연히 rcv()하지 못하고 계속 select()에서 pend되어 있습니다.
혹시나 해서 서버A에서 메세지큐에 send()한 뒤에 signal을 보내니 서버B가 메세비 큐에서 rcv()했습니다.
select()가 메세지큐를 지원하지 못하는건가요?
확실히 확인차 물어봅니다..
두 서버 사이에 메세지 이동이 많기 때문에 시그널을 사용하는 것은 위험합니다.
그래서 pipe 를 쓰려고 하는데..
select()가 pipe를 지원하나요?
만약 지원하지 않는다면,,,
두 서버 사이에 메세지를 주고 받으면서 select()가 지원하는 것은 무엇인가요??
Forums:
너무 늦어서 이미 답변을 찾았는지 모르겠지만select는 mess
너무 늦어서 이미 답변을 찾았는지 모르겠지만
select는 message queues를 지원하지 않습니다.
얼마전인가 어느 site에서 select()에서 messages queues가 가능한 library를 만든것을 보긴 했지만 원칙적으로 지원되지 않습니다.
select()는 socket, file, pipe는 지원합니다.
그외에 또 있나^^;
pipe()나 domain socket을 사용하시면 될 것 같습니다.
댓글 달기