C를 사용하여 런타임에 디스크에서 파일 작업이 수행되었는지 (그리고 수행 된 위치) 확인할 수 있습니까?런타임시 파일 조작이 디스크에서 수행되는지 C로 알 수 있습니까?
0
A
답변
1
귀하의 질문에 대한 답변은 귀하의 의사에 따라 다릅니다. 디스크에서 실제 작업 (검색, 읽기 또는 쓰기)을 감지 할 수 있는지 묻는 경우 대답은 '아니오'입니다. 디스크에는 성능의 이름으로 이러한 작업을 숨기는 디스크 캐시가 있습니다. 위의 메커니즘을 사용하여 캐시가 변경된시기를 알 수 있지만 실제 조작이 수행 된 시점은 알 수 없습니다.
우리는 저널링 파일 시스템을 가지고 있습니다. 그러나 저널링을 사용하더라도 치명적인 오류가 발생하여 캐시를 저장할 수 없으면 실제 데이터가 손실 될 수 있습니다.
위의 방법 중 FileSystemWatcher를 사용했으며 매우 잘 작동합니다. 파일 이벤트가 발생할 때 프로그램이 프로그램 이벤트를 수신한다는 통지를 받고 싶은 이벤트를 선택할 수 있습니다.
적어도 Windows/C#에서 이벤트는 별도의 스레드에서 제공되므로 대리자를 사용하여 이벤트가 발생한 주 스레드 (또는 무엇이든)에 신호를 보내야합니다.
1
체크 아웃 MSDN에서 다음 예제 : 당신은 C 프로그래밍 언어에서 사용할 수있는 특정 OS API를에 의존 할 필요가 Change Notify Watcher Sample
1
합니다.
1
다른 사람들이 말했듯이 플랫폼 독립적/C 표준 방식은 없습니다.
Linux의 경우 inotify API를 사용할 수 있습니다. a tutorial on IBM developerworks이 있습니다.
관련 문제
- 1. SELECT가 한꺼번에 수행되는지 또는 점진적으로 수행되는지
- 2. 변수가 C로 선언되었는지 알 수있는 방법이 있습니까?
- 3. 값이 C로 된 배열에 있는지 어떻게 알 수 있습니까?
- 4. 런타임시 JVM이 객체 클래스를 어떻게 알 수 있습니까?
- 5. 사전을로드하는 것보다 디스크에서 목록을 읽을 수 있습니까?
- 6. 파일 핸들이 소켓인지 어떻게 알 수 있습니까?
- 7. Zip 파일에있는 파일 수 (C로 계산) #
- 8. Objective-C로 파일 생성
- 9. 최적화 - Windows API를 사용하여 디스크에서 파일 읽기
- 10. 런타임시 .ear의 파일 크기를 어떻게 얻을 수 있습니까?
- 11. 파일 조작이 새 행에서 일어나지 않습니다.
- 12. 문자열 조작이 필요합니다.
- 13. 먼저 문제의 데이터를 메모리에로드하지 않고 디스크에서 소켓에 쓸 수 있습니까?
- 14. 파일 이름만으로 파일을 찾을 수 있습니까 (확장자를 알 수 없음)
- 15. 어떻게 알 수 있습니까?
- 16. C로 긴 ASCII 파일 읽기
- 17. C에서 C로 파일 전처리 이식
- 18. mysql 테이블이 업데이트되었는지 어떻게 알 수 있습니까?
- 19. 어떻게하면 % d을 C로 인쇄 할 수 있습니까
- 20. 어떻게 전자 메일을 C로 보낼 수 있습니까?
- 21. 누군가 이것을 C로 이식 할 수 있습니까?
- 22. PPC 어셈블리를 C로 변환 할 수 있습니까?
- 23. C++, C로 Android 프로그래밍을 할 수 있습니까?
- 24. Windows에서 C로 된 파일 검색
- 25. 런타임시 Jsp 파일 미리 컴파일
- 26. 디스크에서 파일을 직접 읽는 방법?
- 27. 런타임시 IsLoggingEnabled()가 변경 될 수 있습니까?
- 28. log4j conversionpattern을 런타임시 어떻게 설정할 수 있습니까?
- 29. .NET에서 런타임시 메서드 본문을 수정할 수 있습니까?
- 30. 런타임시 주석 변수를 결정할 수 있습니까?