epoll_ctl 예제

이 첫 번째 예제에서는 epoll_create1()를 사용하여 강력한 커널에 의해 제공된 새 epoll 인스턴스에 대한 파일 설명기를 만듭니다. 그것은 아직 그것으로 아무것도 하지 않습니다 하는 동안 우리는 여전히 프로그램을 종료 하기 전에 그것을 정리 해야 합니다. 그것은 다른 리눅스 파일 설명자 처럼 때문에 우리는 그냥 사용할 수 있습니다 close () 이대. 성공하면 epoll_ctl(2)은 0을 반환합니다. 오류가 발생하면 epoll_ctl(2)이 -1을 반환하고 errno가 적절하게 설정됩니다. 예시적인 예제를 통해 에지 트리거 알림이 epoll에서 작동하는 방식을 더 잘 이해할 수 있습니다. 프로세스에서 epoll 인스턴스에 4개의 설명자를 등록한 이전에 사용한 예제를 사용해 보겠습니다. fd3가 소켓이라고 가정해 봅시다. epoll_ctl – epoll 설명자에 대한 제어 인터페이스 다음 해야 할 일은 어떤 파일 설명자가 보고 어떤 종류의 이벤트를 볼 것인지 를 epoll에 알려주는 것입니다.

이 예제에서는 리눅스에서 내가 가장 좋아하는 파일 설명자 중 하나를 사용합니다, 좋은 ol`파일 설명자 0 (표준 입력이라고도 함). epoll 인스턴스와 연결된 파일 설명자는 close() 시스템 호출을 사용하여 해제해야 합니다. 예를 들어 EPOLL_CLOEXEC 플래그가 없는 포크가 자식 프로세스의 epoll 인스턴스에 설명기를 복제하기 때문에 여러 프로세스가 동일한 epoll 인스턴스에 설명기를 보유할 수 있습니다. 이러한 모든 프로세스가 epoll 인스턴스에 대한 설명기를 포기하면(close() 호출하거나 종료하여 커널은 epoll 인스턴스를 파괴합니다. 위의 예제 프로세스에서 A에는 설명자 3에 가까운 exec 플래그가 표시되어 있다고 가정해 보겠습니다. 프로세스 A 포크 가 B를 처리하는 경우, 포크 직후, 프로세스 A와 프로세스 B는 동일하며, 이러한 프로세스 B는 파일 설명자 0, 1, 2 및 3에 “액세스”를 갖습니다. 즉, fD에 아무것도 넣고 대신 (예를 들어) PTR에 뭔가를 넣어하지 완전히 무료입니다. epoll_ctl syscall의 서명은 다음과 같습니다 : epoll_ctl()을 사용할 때 세 번째 매개 변수 “fd”가 epoll 파일 설명자 “epfd”외에 다른 파일 설명자임을 발견했습니다. 그리고 이런 예를 보았습니다 : 때로는 준비 여부에 관계없이 관심 목록에서 설명자 (예 : fd1)의 상태를 찾으려고 할 수 있습니다.

Comments are closed.