안녕하셔요?? 남재욱씨가 쓰신 온라인 서버게임프로그래밍이란 책으로 공부를 하고 있습니다. 그런데, compile을 할려고 vmware에서 freebsd 4.9를 깔고, linux는 7.2 redhat 배포판을 쓰는데요.. sys/devpoll.h 이라는 화일이 없다는 에러 메시지가 나옵니다. 이 화일은 어디에 있나요?? 어떤 패키지를 깔아야 하나요??
각각 상이하지만, 비슷한 맥락으로 볼 수 있습니다.
호환성? 아직은 잘 안된다는...
과거와의 호환을 위해서는 select()또는 poll()을 써야겠지요.
그러나, 리눅스라면 epoll로 솔라리스라면 /dev/poll로 BSD라면 kqueue로 이도저도 없으면, poll로 모 이런식으로 되는 라이브러리를 사용자 수준에서 만들면 좀 ~ 편하겠지요. 그러면서 부가적으로 몇가지 더 만든게, libevent라는 라이브러리 입니다.(검색하면 바로 나옴)
아~ 쓸데없는 말이 길어졌고,......
sys/devpoll.h 은 솔라리스의 좀 ~한 폴링 장치를 사용하는 경우입니다.
그래서, 아마도 솔라리스에서 컴파일 하셔야 되겠지요. 아니면 포팅을 좀 하던가.... 책에서 제공하는 원판 소스가 포터블하게 안되어있나 보군요??
* /usr/include를 빼고 기술하지요. 이를테면 /usr/include/stdio.h를 인클루드하려면, #include <stdio.h> 모 이렇게 씁니다. 또 예를들면, 솔라리스의
/usr/include/sys/devpoll.h를 인클루드하려면 #include <sys/devpoll.h> 이렇게 씁니다.
select() 및 poll()이라는 IO이벤트를 감지해주는 커널시스템호
select() 및 poll()이라는 IO이벤트를 감지해주는 커널시스템호출이 있었습니다.
이것을 만들 당시 현재처럼 IO가(특히, 통신) 그리 빈번한 이슈는 아니었습니다.
그런데, 인터넷이 등장하고 VOD, 대용량 서버등 다수,대용량성이 요구되었습니다.
그래서, 어떻게 하면 성능을 좀~해볼까..하고 고민하다가, 각 시스템(유닉스들)별로 잘~ 만들어 봅니다.
리눅스 epoll이라는 메카니즘을 ..
솔라리스 /dev/poll이라는 메카니즘을...
BSD는 kqueue라는 메카니즘을 ...
각각 상이하지만, 비슷한 맥락으로 볼 수 있습니다.
호환성? 아직은 잘 안된다는...
과거와의 호환을 위해서는 select()또는 poll()을 써야겠지요.
그러나, 리눅스라면 epoll로 솔라리스라면 /dev/poll로 BSD라면 kqueue로 이도저도 없으면, poll로 모 이런식으로 되는 라이브러리를 사용자 수준에서 만들면 좀 ~ 편하겠지요. 그러면서 부가적으로 몇가지 더 만든게, libevent라는 라이브러리 입니다.(검색하면 바로 나옴)
아~ 쓸데없는 말이 길어졌고,......
sys/devpoll.h 은 솔라리스의 좀 ~한 폴링 장치를 사용하는 경우입니다.
그래서, 아마도 솔라리스에서 컴파일 하셔야 되겠지요. 아니면 포팅을 좀 하던가.... 책에서 제공하는 원판 소스가 포터블하게 안되어있나 보군요??
* /usr/include를 빼고 기술하지요. 이를테면 /usr/include/stdio.h를 인클루드하려면, #include <stdio.h> 모 이렇게 씁니다. 또 예를들면, 솔라리스의
/usr/include/sys/devpoll.h를 인클루드하려면 #include <sys/devpoll.h> 이렇게 씁니다.
Makefile을 수정하세요
아래와 같이 리눅스 부분은 주석을 푸시고 솔라리스 부분은 주석 처리를 해주세요
#for Linux OS########################
SL_LINK= -D_LINUXOS
#####################################
#for solaris#########################
#SS_LINK= -lsocket
#####################################
댓글 달기