2012-08-03 2 views
2

파일 변경 또는 소켓 입력을 기다리고 싶습니다. 이러한 thinsg 둘 다 거의 발생하지 않을 것이며, 오히려 약간의 혼란을 피하기 위해 별도의 스레드를 사용하는 대신 둘 다 같은 스레드에 던져 넣을 것입니다. Inotify_init가 파일 서술자를 제공하는 것 같아서 소켓으로 전달한 것과 똑같은 방식으로 select에 전달할 수 있다고 생각 했었고 select를 사용하면 효과적으로 두 가지를 모두 모니터 할 수있었습니다. 그러나, 나는 그것을 google 해 보았고 아무 곳에서나 일어나는 일을 발견하지 못했고, 인터넷에 어딘가에서 일어나고있는 일이있을 수있는 것처럼 보인다.Inotify 및 Select 호출을 병합 할 수 있습니까?

사람이 소켓과 같은 select 메소드로 descripter를 전달할 수 있는지 확인할 수 있습니까? 아니면 파일 및 소켓 업데이트를 수신 대기하는 다른 차단 방법이 있습니까?

감사합니다.

답변

2

이것은 일반적으로 유닉스 장치가 작동하는 방식입니다. 파일 설명자를 얻은 후에는 select/poll/epoll (Linux 시스템에서는 epoll을 선호합니다)으로 전달할 수 있습니다. 그러나 documentation for inotify에는 명시 적으로 선택할 수 있음이 명시되어 있습니다. 따라서 작동하지 않는다면 버그를 신고 할 수 있습니다.

inotify_init1을 사용하고 IN_NONBLOCK을 플래그로 사용하여 비 차단 모드에서 설명자를 열 수 있습니다.