내 로그 파일이 포함된 디렉터리의 이름 변경 감지

내 로그 파일이 포함된 디렉터리의 이름 변경 감지

메시지를 파일에 기록하는 C++ 프로그램이 있습니다. 때때로 이 로그 파일이 포함된 디렉터리의 이름이 바뀌거나 심지어 삭제되고 같은 이름의 폴더가 다시 생성됩니다.

데몬은 이러한 일이 발생하고 있음을 어떻게 감지하여 로그를 다시 열 수 있습니까? 즉, 나는 inotify를 사용하여(또는 더 일반적으로는 다음을 사용하여 이 작업을 수행할 수 있다는 것을 알고 있습니다.)무료 이벤트), 하지만 더 간단한 것이 있을까요?

우리의 Python 프로그램은 다음을 사용합니다 logging.handlers.WatchFileHandler(). - C++와 비슷한 것이 있습니까? 변경사항에 대해 즉시 알 필요는 없습니다. 프로그램에 작성할 새 메시지가 있는 경우에만...

답변1

내 생각에 유일한 이식 가능한 방법은 fstat()이미 파일 설명자(한 번)와 stat()원래 파일 이름(새 쓰기 전)을 열고 결과를 비교하는 것입니다.

실패 하거나 stat()두 호출이 st_dev동일한 필드를 채우지 않으면 새 로그 항목을 작성하기 전에 로그 파일을 다시 엽니다.st_ino

관련 정보