python inotifyx에서 프로그램 종료까지 시스템 파일 설명자를 필요로하는 경우 시계를 닫고 열어야합니까? 예 : 각 실행마다 하나 (파일 설명자 +보기)를 만들고 닫지 않으면 몇 가지 가능한 문제가 있습니까?파일 설명자를 닫고 inotify watch를 제거하는 것이 정말로 필요합니까?
답변
커널은 시계를 전체 경로로 저장하므로 시계를 닫는 것이 바람직하며 VFS에서 불필요한 작업을 수행합니다. 파일 디스크립터에 관해서는, 얼마나 많은 다른 파일을 열 었는지에 달려있다.
같은 종류의 전화 통화로 상대방에게 듣기를 중지했음을 알리는 것이 좋으며 전화 끊기는 선택 사항이지만 일반적입니다. 당신이 그것을 필요로한다면, 그것을 지키십시오.
그러나 리눅스가 프로세스가 종료 될 때 자동으로 그렇게해서는 안됩니까? 아니면 inotify 시계를 제거하지 않아도 OS에 추가 추적을 남길 수있는 눈에 띄는 기회가 있습니까? – HoverHell
@ hell.orts.ru : 그렇습니다. Linux는 프로세스가 종료 될 때 _ 그것을 처리합니다. 질문에서 말한 방식에서 더 이상 시계가 필요 없지만 파일 설명자를 유지하려고합니다. 이 경우 예, 시계를 분리하고 FD를 보관하십시오. –
사용을 끝내면 언제든지 리소스 (예 : 사용 가능한 메모리, 파일 설명자 닫기, 하위 프로세스의 waitpid (2) 등)를 해제하는 것이 좋습니다. 게으르다가 종료 할 때 운영 체제에서 처리하도록하면 나중에 버그가 발생할 수 있습니다.
"미래의 버그"를 이해한다면 리눅스 커널이나 파이썬에서 심각한 버그를 의미 할 것입니다. 아니면 뭔가 빠졌어? – HoverHell
글쎄, 그럴 수도 있겠지만, 그럴 가능성은 희박하다. 더 많은 경우에는 리소스를 누출시킬 수있는 방식으로 코드를 수정해야합니다. 예를 들어 코드 덩어리를 함수로 리팩토링하고 여러 번 호출하면 --- 새 함수가 파일 설명자를 유출하면 문제가 발생합니다. –
+1, 좋은 질문입니다. –