mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Monday, January 29, 2007

C, Perl에서, 연 파일을 닫아야 하는 이유는? fclose() close()로


파일을 한 번 오픈(open)했으면, 그 파일에 읽기 또는 쓰기 작업을 끝낸 후, fclose() 등의 함수로 (펄은 close()), 그 파일을 닫아 주어야 합니다. 다른 언어에서도 마찬가지입니다.

Q: 파일을 닫지 않으면 어떻게 됩니까?
A: 파일을 닫지 않으면, 프로그램을 종료해도 그 파일의 삭제나 이름 변경이나 이동이 잘 안되는 경우가 생깁니다.

그리고 메모리 속에 그 파일에 대한 정보가 계속 남아 있어서 메모리를 불필요하게 차지할 수도 있습니다. 물론 이런 문제는 컴파일러나 운영체제에 따라 좀 다릅니다. (MS-DOS에서는 시스템 전체가 불안정해지는 경우도 있었습니다.)

Perl(펄) 같은 언어는, 작업 블록을 벗어나면 자동으로 파일이 닫힙니다. 그러나 되도록 close() 함수를 사용하여 명시적으로 닫아주는 것이 안전합니다.

다만 C의 경우, exit() 함수를 사용하여 프로그램을 종료했다면, exit() 함수가 모든 열린 파일들을 자동으로 닫아주기("Before termination, all files are closed...")에 직접 닫을 필요는 없습니다.




tag: cpp
C언어 | C/C++ (Visual C++)
tag: perl
Perl | 펄

2 Comments:
At January 30, 2007 at 9:26 PM, Blogger mwultong said...

아, 그런 점도 있었습니다.

도스는 동시에 열 수 있는 파일 개수에 제한이 있었지요.

(∩_∩)

 
At April 1, 2007 at 4:18 PM, Anonymous Anonymous said...

Dos, C 환경에서 파일을 Open만 하고 Close 하지 않을 경우 최대 파일 Open 숫자를 넘기게 되면 더 이상 Open 되지 않고 에러를 발생시키더군요. :)


(새 블로거 버전에서는, 한글 아이디 글자가 깨져서, 다시 올립니다.)

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top