2010-12-21 3 views
5

누구도 MAC OS X 용 NETLINK Sockets API에 해당하는 것을 알고 있습니까? Mac OS X에 Linux 응용 프로그램을 포팅하려고하는데 MACOS에서 비슷한 것을 찾을 수 없습니다.누구도 MAC OS X 용 NETLINK Sockets API에 해당하는 것을 알고 있습니까?

내 응용 프로그램에서 네트워크 어댑터에 대한 비동기 액세스를 제공해야합니다.

구성 변경에 대한 폴링 네트워크 어댑터 등 모든 특정 시간 (초)은 나에게 편리한 해결책이 아닙니다. NETLINK 소켓 API 게임 내게 뭔가 흥미로운 일이있을 때만 알림을받을 수있는 방법.

나는 NETLINK가 리눅스 커널과 사용자 공간 사이에서 통신하는 리눅스 특유의 것이지만, 아마 MACOS 아래에 NETLINK와 같은 것이 존재한다는 것을 알고있다. sysctl을()

이 사람이 어떤 정보를 가지고 있습니까 -

나는 커널과 통신 할 수있는 유일한 도구 참조?

답변

2

OSX에서 제공하는 해당 문서의 NKE 섹션에 설명되어있는 kernel control architecture을 사용할 수 있습니다.

+6

공격적인 음성은 허용되지 않습니다. 나는 불쾌한 부분을 제거하기 위해 귀하의 질문을 편집했습니다. 당신이 주장한다면, 그것은 결국 끝날 것입니다. – jweyrich

-3

이 작업을 수행하는 전통적인 방법은 select/poll/epoll/kqueue를 사용하여 소켓에서 이벤트를 기다리는 것입니다. 어떤 플랫폼에서 무엇이 가장 좋은지에 대한 답변을 확인하십시오 : select vs poll vs epoll.

또는 각 연결에 대해 새 스레드를 생성하고 블로킹 소켓 읽기를 사용하십시오. 하지만, 역사는 select/poll/kqueue를 통해 non-blocking I/O보다 확장 성이 적다고 가르쳐 왔습니다. 이것은 1990 년대에 대부분의 사람들이 원래 네트워크 서버를 작성한 방식이었습니다. 코딩 스타일에 따라 I/O + 스레드를 차단하는 것이 더 쉽게 작업 할 수 있습니다.

그 이름과 달리 epoll은 폴링하지 않습니다.

+0

나는 소켓을 듣고 소켓에서 데이터를 보내고받는 것에 대해 이야기하는 것이 아닙니다. NETLINK 소켓 API를 사용하여 네트워크 어댑터 설정 및 구성 데이터를 얻는 방법에 대해 설명합니다. Netlink는 커널과 사용자 공간 프로세스 사이의 IPC뿐만 아니라 사용자 공간 프로세스 만 (예 : 유닉스 소켓) 또는 다중 사용자 공간과 커널 공간 프로세스의 혼합 사이의 소켓 형 메커니즘입니다. 내 조사에 따르면 Mac OS X 용 NETLINK API가 없다는 것을 알 수 있습니다. 나는 그것을 대신 할 어떤 종류의 것을 찾고있다. 오후 8시 30 분 P.S. epoll() 시스템 호출은 MAC OS X 8에 존재하지 않습니다.) – Vlad