유닉스/리눅스 시스템에서 파일을 시청할 때 알림 및 폴링의 두 가지 주요 경로가 언급되었습니다.
알림은 시스템 자체 (일반적으로 커널)가 파일에 액세스하거나 쓸 때마다 등록 된 응용 프로그램에 메시지를 트리거하는 경우입니다. 이 접근 방식에는 호환 시스템이 필요하며 구형 시스템에서는 사용하지 못할 수도 있습니다.
Linux에서 알림의 주요 구현은 커널 2.6.13 이상에 내장되어 있으며 2.6.12 및 이전 버전으로 패치 될 수있는 inotify입니다. inotify 사용에 대해서는 뿐 아니라 inetify 액세스 용 기본 set of tools and C library이 있습니다.
폴링은 프로그램이 주기적으로 파일을 검사하여 파일 크기, 최종 수정 시간, 소유자 등이 변경되었는지 여부를 확인합니다.
poll 시스템 호출이 있지만이 목적을 위해 유용한 것으로 보이지만 시스템 수준이 아닌 프로그램 수준으로 작성되었으므로이 표준 구현은 없습니다 (맨 페이지에 select과 비슷합니다). , 파일 디스크립터에서 이벤트가 사용 가능해질 때까지 기다린다). stat으로 좀 더 기본적인 접근법을 취할 수 있으며 직접 확인하십시오.
출처
2009-07-03 06:15:38
Tim
설명해 주셔서 감사합니다. –
나는 poll()이 도움이 될지 의심 스럽다. poll()이하는 일을 오해 한 것 같습니다. * inotify와 함께 * 사용하지 않는 한. – Thomas
명확히하기 위해 : poll()은 "이 파일을 지금 읽으면() 그 블록이됩니까?" 또는 "최대 3 초 동안 기다리거나이 파일 설명자 중 하나 이상에서 read() 차단없이 읽을 수있을 때까지". – Thomas