• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    해결됨

간단한 fd에 관한 질문

20.04.04 11:29 작성 조회수 145

1

5:25 경에, 모든 fd들은 프로그램이 종료되면 자동으로 닫아준다고 말씀하셨는데,  그럼 지금까지 프로그래밍 해오면서  작성해준 close(fd); 는 그렇게 필수적인 것은 아니라는 건가요? 

답변 1

답변을 작성해보세요.

1

네. 맞습니다. 프로그램이 종료되면 운영체제가 그 프로그램이 열고 있던 모든 리소스(fd포함)을 닫아줍니다. 따라서 프로그램이 끝나는 시점의 close(fd)는 필수적인 것은 아니었다고 말할 수 있습니다.

하지만, 꼭 그렇지만은 않습니다. 할당 받은 리소스는 사용을 마친 후 리소스 해제 처리를 하는 것이 정석입니다. 또, 이렇게 연습이 되어 있어야만 합니다. 강좌에서는 아주 짧은 예제 코드만 다루게 되지만, 실제 업무에서는 이보다 훨씬 큰 코드가 하나의 프로그램을 이루고 있습니다. 어떤 리소스를 할당받고 해제하는 것을 칼같이 정확하게 프로그래밍을 해놓지 않는다면, 이 프로세스는 언젠가는 문제가 생기게 됩니다. 게다가 보통은 이런 문제들이 해결하기도 어렵습니다. 문제가 단기간에 재현되지도 않고,  재현된다 하더라도 누가 어디에서 잘못한지 판단하기가 어려운 경우가 많습니다. 

리소스를 할당받고 해제처리를 제대로 하지 못하는 것은 누구나 할 수 있는 실수 입니다. 항상 신경쓴다 하면서도 자주 하는 실수 입니다. 아무리 운영체제가 알아서 해제를 해준다 하더라도, 직접 해제처리 하는 것이 숙달되어 있는 것이 좋습니다.

좋은 질문 감사합니다~:D