유닉스에서 : 나는 FAM
과 Gamin
을 겪었으며 클라이언트/서버 파일 모니터링 시스템을 제공하는 것 같습니다. 차라리 커널에 일부 inode를 모니터하도록 시스템을 지정하고 이벤트가 발생하면 다시 알려줍니다. Inotify
은 그 측면에서 처음에 유망 해 보였습니다 : inotify_init1
poll()
을 차례로 반환하는 IN_NONBLOCK
을 전달합시다. 그러나 모니터 된 파일에 대한 뉴스를 원한다면 정기적으로 호출해야한다는 것을 이해했습니다. 이제 나는 약간의 아이디어가 부족합니다.파일을 비동기로 모니터링
파일을 비동기 적으로 모니터링 할 항목이 있습니까?
추신 : 나는 아직 Windows를 보지 않았지만 그것에 대해서도 답을하고 싶습니다.
'inotify'는 정확히 당신이 찾고있는 것입니다. inotify 파일 설명을'poll()'요청에 포함 시키면 읽을 수있는 inotify 이벤트가있을 때 반환됩니다. 평소와 같이'poll()'과 같이, 당신이 요청한 파일 디스크립터가 준비되지 않았고 타임 아웃이 만료되지 않은 한 차단할 것이다. 그럼 문제가 어디 있니? – Celada
잘'poll()'호출을 블로킹하는 것은 정확히 내가 비동기라고 부르는 것과 정확히 똑같지 않다. – qdii
inotify 이벤트 (또는 소켓에서 사용할 수있는 데이터 또는 다른 종류의 이벤트의)? 당신의 소프트웨어가 이벤트를 기다리고 구조화되어 있다면, 당신은 이미'poll()'또는 유사한 것을 호출하는 이벤트 루프를 가지고 있습니다. 대신 이벤트가 오기를 기다리는 동안 다른 코드를 실행하려면 별도의 스레드에서 수행해야 할 수도 있습니다.이 경우 메인 스레드는 계속 이벤트 루프를 사용하거나 그렇지 않으면 비 블로킹을 필요로하지 않습니다. IO를 사용하면'inotify'의'read()'를 차단하는 스레드를 하나 가질 수 있습니다. – Celada