파일 설명자를 사용한 후에는 닫아야 합니까?

파일 설명자를 사용한 후에는 닫아야 합니까?

나는 프로젝트를 진행 중입니다. 그런데 소스 코드에서 닫히지 않은 파일 설명자가 많다는 것을 발견했습니다. 언뜻 보면 이 모습이 좋아 보이지는 않습니다. 구글링을 해보니 누군가 이 fd 뒤에 버퍼가 있으면 닫지 마세요. 그렇지 않으면 나쁜 일이 일어날 것이라고 말했습니다. 나는 이것에 대해 잘 모르겠습니다. 그럼 누구든지 조언을 해줄 수 있나요?

파일 설명자를 사용한 후에는 닫아야 합니까? 파일 설명자 사용에 대한 규칙이 있습니까?

답변1

예, 관련 리소스를 확보하고 제한에 도달하는 것을 방지하려면 더 이상 필요하지 않은 즉시 파일 설명자를 닫는 것이 가장 좋습니다.

이제 일부 파일 설명자는 특정 API를 통해 열 수 있으며 이를 닫을 때는 시스템 호출을 사용하는 대신 동일한 API를 사용해야 합니다 close(2).

이러한 일반적인 API는 C 언어의 stdio(all fopen, printf, fputs...)입니다. 예를 들어, 파일 fopen(3)(파일 설명자가 아닌 데이터 유형을 반환 하지만 그 아래에 fd를 생성하는) 파일을 여는 경우 stdio에서 fd를 닫는 대신 (모든 버퍼를 플러시하는) FILE*if를 닫아야 합니다. .fclose(thatFILE)close(fileno(thatFILE))

관련 정보