Linux에서 사용할 수 있는 최고 MUX, epoll! 아흥~* 이것에 그냥 아주 녹아들어 살고 있다. 아주 좋아좋아~* 각설하고, 프로그래머라면 될 수 있으면 잘 설계한 소스 하나 가지고 여기저기 사골 울궈 먹듯 울궈 먹고 싶어할 것이다. 나 역시 그랬고, 기존 poll을 잘 씌운 클래스를 epoll로 포팅하려고 했다. 이때 문제점이 하나 있는데, 각 API에서 이벤트를 나타내는 변수를 POLL* 또는 EPOLL*로 처리하고 있다. 많이 쓰이는 녀석(IN, OUT, ERROR)은 대충 비슷해보이는데 말이야... 변환 없이 그냥 EPOLL에 POLL* 쓰면 혼날까? 결과적으론 EPOLL*랑 POLL*랑 동일한 녀석이다. 소스를 보자... #include <cstdio> #include <cstdlib> #include <typeinfo> using namespace std; #include <sys/poll.h> #include <sys/epoll.h> #define SHOWDEF(x) \ printf("%s(%s,%u): 0x%04X\n", #x, typeid(x).name(), sizeof(x), x) #define CMPDEF(x) \ printf("compare %s: %d\n", #x, POLL##x == EPOLL##x) int main(int,char**) { SHOWDEF(POLLIN); SHOWDEF(POLLPRI); SHOWDEF(POLLOUT); SHOWDEF(POLLERR); SHOWDEF(POLLHUP); SHOWDEF(EPOLLIN); SHOWDEF(EPOLLPRI); SHOWDEF(EPOLLOUT); SHOWDEF(EPOLLERR); SHOWDEF(EPOLLHUP); CMPDEF(IN); CMPDEF(PRI); CMPDEF(O