임시 파일
임시 파일은 프로그램의 중간 사용이나 완료 시 영구 파일로 전송하기 위해 일시적으로 정보를 저장하기 위해 생성된 파일이다. 프로그램이 해당 작업에 충분한 메모리를 할당할 수 없는 경우, 프로그램이 아키텍처의 주소 공간보다 큰 데이터를 처리하는 경우 또는 프로세스 간 통신의 기본 형태와 같은 다양한 목적으로 컴퓨터 프로그램에 의해 생성될 수 있다.
보조 기억 목적
[편집]최신 운영 체제는 가상 메모리를 사용하지만 많은 양의 데이터를 사용하는 프로그램(예: 비디오 편집)에서는 임시 파일을 생성해야 할 수도 있다.
프로세스 간 통신
[편집]대부분의 운영 체제는 프로그램 간에 데이터를 전달하기 위해 파이프, 소켓 또는 공유 메모리와 같은 기본 요소를 제공하지만 종종 가장 간단한 방법(특히 유닉스 철학을 따르는 프로그램의 경우)은 임시 파일에 데이터를 쓰고 수신 프로그램에 위치를 알리는 것이다.
생성
[편집]운영 체제와 프로그래밍 언어는 일반적으로 고유한 임시 파일 이름을 얻기 위한 기능을 제공한다.
POSIX 시스템에서는 mkstemp 또는 tmpfile 라이브러리 기능을 사용하여 임시 파일을 안전하게 생성할 수 있다. 일부 시스템은 이전 POSIX(현재 제거됨) mktemp(1) 프로그램을 제공한다. 이러한 파일은 일반적으로 표준 임시 디렉토리인 유닉스 시스템에서는 /tmp, 윈도우 시스템에서는 %TEMP%(로그인 전용)에 있다.
tmpfile로 생성된 임시 파일은 프로그램이 종료되거나 파일이 닫히면 자동으로 삭제된다. 작성 프로그램의 수명이 지난 후에도 유지되는 임시 파일 이름을 생성하려면 tmpnam(POSIX) 또는 GetTempFileName(...)(Windows)을 사용할 수 있다.
문제
[편집]일부 프로그램은 임시 파일을 생성한 다음 그대로 두고 삭제하지 않는다. 이는 프로그램이 충돌했거나 프로그램 개발자가 프로그램 작업이 완료된 후 임시 파일을 삭제하는 데 필요한 코드를 추가하는 것을 잊어버렸기 때문에 발생할 수 있다. 남겨진 임시 파일은 시간이 지남에 따라 누적되어 많은 디스크 공간을 소모할 수 있다.
임시 파일은 수동으로 삭제할 수 있다. 운영 체제는 재부팅 시 임시 디렉터리를 지울 수 있으며 일정 시간 동안 파일에 액세스하지 않은 경우 파일을 제거하는 "클리너" 스크립트가 있을 수 있다. 또한 tmpfs와 같은 메모리 기반 파일 시스템은 본질적으로 재부팅 시 파일을 보존하지 않는다.