2013-09-28 2 views
0

inotifystd::thread을 사용하여 응용 프로그램 외부에서 파일이 수정되었는지 확인하는 응용 프로그램이 있습니다. 문제는 응용 프로그램 내에서 파일이 수정되면 inotify이 작동하고 외부에서 업데이트 된 것으로 간주된다는 것입니다. 내 질문은 어떻게 응용 프로그램 밖에서만 파일이 수정되었는지 확인할 수 있습니다. 거의 모든 텍스트 편집기가 그런 식으로 작동합니다 (파일을 바깥 쪽에서 수정하면 다시로드하라는 메시지가 표시되지만 내부에서 텍스트를 수정할 때 그런 내용은 묻지 않습니다). 해당 응용 프로그램은 어떻게 설계됩니까?파일이 수정되었는지 확인하십시오. 응용 프로그램 외부에

+0

운영 체제에 따라 다릅니다. 당신은'inotify'에 대해서 언급 할 것이므로 아마도 리눅스를 목표로하고있을 것입니다. –

답변

1

편집자가 어떻게하는지 알지 못합니다. 그러나 응용 프로그램이 파일 자체에 글을 쓸 때 글쓰기를 "알았"기 때문에이 작업을하는 동안 알림이 바뀌거나 그냥 "물론, 나는 파일에 썼다는 것을 안다. 그래서 나는 그것을 무시할 것이다"라고 말한다.

+0

"나는 파일에 썼다는 것을 알았 기 때문에 그냥 무시할 것입니다."라고 말하는 방법을 모르겠습니다. – khajvah

+0

글쎄요, 물론 그럴 것입니다. 당신이 알아 내야 할 무언가가되어야합니다. 아마도 전역 변수 [또는 마지막으로 파일에 썼을 때의 타임 스탬프]를 사용하여 스레드가 얻을 수있는 어딘가에 저장되는 비전 역 변수 (예 : 스레드 컨텍스트)가 될 수 있습니까? 라이터 스레드와 "검사기 스레드"간에 공유되는 변수를 검사 할 때 데이터 경주가 발생하지 않도록 일종의 보호 기능을 사용하는 것을 잊지 마십시오. –

관련 문제