파일이 POSIX에서 수정되었는지 확인하는 방법이 있습니까? 더 구체적으로, 아래에 is_modified()
을 어떻게 구현할 수 있습니까?열린 파일이 C로 수정되었는지 확인
FILE *f = fopen("myfile", "r+");
// do various things with f
if (is_modified(f))
foo(f);
일부 컨텍스트를 제공하기 위해 모든 파일에 해시를 테이블에 저장해야하는 모듈을 C 언어로 작성했습니다. 인터페이스는 fopen()
및 fclose()
에 대한 래퍼를 제공하며 파일이 닫힐 때 해싱을 수행 할 수 있습니다. 이 작업을 수행하는 방법은 여러 가지가 있지만 효율적인 방법, 깨끗한 방법 또는 오류가없는 방법은 내가 좋아할만한 것입니다.
- 쓰기 위해 열린 모든 파일의 해시를 계산합니다.
fflush(f)
타임 스탬프가 변경되었는지 확인하십시오. 등- 제공 래퍼 주위
fwrite()
,fprintf()
,
어떤 제안이?
사람이 당신의 해시 항목을 다시로드/무효화 한 후 누군가가 파일을 변경할 때 알림을받을 kqueue 알림 시스템을 사용하고 있습니다 당신은 하나라면 그 파일을 엽니 다. 단순히 파일을 쓸 지 여부를 계속 추적하지 않는 이유는 무엇입니까? –
추상화. 이것은 클라이언트가 원하는대로 작동 할 수있는 파일 핸들을 제공하는 모듈입니다. 표준 라이브러리 함수를 사용하여 열린 파일에서 작동하는 다른 코드의 큰 부분을 수정하고 싶지 않습니다. – nccc
다른 프로세스가 파일을 동시에 수정할 수 없도록하려면 [파일 잠금] (http://en.wikipedia.org/wiki/File_locking)을 살펴보십시오. – jweyrich