예제 코드의 조각이있다 : 첫 번째 읽기는 시스템 파일 기술자를 할당 할 그것을 모습에, 그 내용을 읽어 파이썬 기간은 <a href="http://docs.python.org/library/pickle.html" rel="nofollow noreferrer">pickle module documentation</a>에서
reader = pickle.load(open('save.p', 'rb'))
다음
close()
을 호출 할 수있는 핸들이 없기 때문에 열린 디스크립터를 "누설"합니다. 이것은이 사건을 처리하는 숨겨진 마술이 있는지 궁금해했습니다.
소스로 다이빙하면서 Modules/_fileio.c에서 fileio_dealloc() 소멸자가 파일 설명자를 닫았으며 실제 질문을 이끌어 냈습니다.
위의 예제 코드에서 사용되는 파일 객체의 지속 시간은 얼마입니까? 그 명령문이 실행 된 후에 그 객체는 참으로 참조 해제되지 않으므로 fd는 미래의 가비지 콜렉션 스윕에서 실제 close(2)
호출을 받게 될 것입니까? 그렇다면, 예제 라인은 좋은 연습일까요? 아니면 커널이 프로세스 디스크립터 테이블이 고갈 될 위험이있는 fd에 의존하지 않아야합니까?
감사합니다. 당신이 옳았어요. "돌아왔다"가 아니라 "사용하다"를 의미하고 수정하기 위해 편집했습니다. – msw