2011-09-14 3 views
0

파일이 닫혔다는 것을 리눅스가 정확히 알고있는 메커니즘은 무엇입니까? INOTIFY와 같은 명령은 파일이 닫힐 때 IN_CLOSE_WRITE 이벤트를 트리거한다는 것을 알고 있습니다. 그러나 어떻게 작동합니까? 어떤 파일을 닫을 수 있습니까?커널이 파일을 닫았다는 것을 어떻게 알 수 있습니까?

OS는 파일이 열렸음을 어떻게 알 수 있으며 그 사실을 어디에서 등록합니까?

답변

2

운영체제 (즉 커널) 실제로 열고 파일을 폐쇄 한 것이다. 프로그램은 시스템 호출을 통해 매번 파일을 열거 나 닫으려고 할 때마다 OS에 알려야합니다. OS는 단순히 자신을 통과하는 이러한 호출을 추적 할 수 있습니다.

+0

감사합니다. 예를 들어 특정 Q를 묻습니다./tmp 디렉토리의 서버 A에서 FTP 프로세스를 시작한다고 가정 해보십시오. IN_CLOSE_WRITE 이벤트 인 PYINOTIFY를 사용하여 디렉토리를 감시합니다. FTP가 성공적으로 완료되면 IN_CLOSE_WRITE가 트리거됩니다. 그러나 FTP가 어떤 이유에서든 중간에 실패하더라도 IN_CLOSE_WRITE 이벤트가 트리거됩니다. OS가 FTP 프로세스가 더 이상 파일을 쓰지 않는다는 것을 알고있는 메커니즘은 무엇입니까 (높은 대기 시간을 가진 ftp 프로세스가 여전히 파일에 기록하고 있지만 대기 시간은 매우 길다). –

+0

@A J : FTP 서버가 쓰기 작업 후 수동으로 파일을 닫지 않았습니까? –

+0

현재 리눅스 커널은 어떤 파일을 열어 저장합니까? –