2012-06-03 3 views
4

inotify을 사용하여 디렉토리 내의 이름이 지정된 파일의 변경 사항을 모니터링하는 방법에 익숙하지만 현재 열린 파일 핸들에서만 알 수있는 파일의 수정을 감시 할 수 있는지 궁금합니다. 그런 일이 가능한가?열린 파일 핸들에서 Linux inotify를 사용할 수 있습니까?

inotify_add_watch은 경로 이름만을 사용하는 것으로 기록되어 있으며 시계를 추가 할 다른 기능은 없습니다.

이 작업을 수행하지 못하면 열린 파일 핸들을 가져 와서 어떻게 든 경로 이름으로 변환하여 inotify에 전달할 수 있습니까?

편집 : 실제로 엄격하게 inotify하지 않아도됩니다. 정규 파일이 추가되거나 수정되었을 때 알림을받을 수있는 메커니즘을 찾고 있습니다. tail -f 등으로 생각하십시오.

+0

epoll()은 어떻습니까? – Friek

+0

@Friek : epoll()은 일반 파일 핸들에 사용할 수 없습니다. epoll_ctl (2)는 지원되지 않는 파일 핸들에 대한 EPERM을 리턴한다고 말합니다. 나는 이것을 실험적으로 관찰했다. – LeoNerd

+0

호기심에서 벗어난 파일 핸들이 epoll에서 지원되지 않는 이유는 무엇입니까? – Friek

답변

2

"/ proc/x/fd/y"를 inotify_add_watch의 경로 이름으로 사용할 수 있습니다. 여기서 x는 프로세스 ID이고 y는 파일 핸들 ID입니다.