2014-12-29 3 views
1

일부 언어 또는 플랫폼에 대한 일반적인 질문이 아닙니다. $ TEMP 폴더에 생성 된 파일에 대한 책임은 누구에게 있습니까? 그것이 나의 의무라면, 왜이 파일을 어디에 두어야하는지 신경 써야합니까? 나는 같은 결과로 어디서나 배치 할 수 있습니다. OS의 책임 인 경우 사용 직후이 파일을 잊어 버릴 수 있습니까? 내 기본적인 영어스크립트로 만든 임시 파일을 삭제해야합니까?

감사하고 죄송합니다.

+2

네, 그렇습니다.대부분의 운영 체제는 임시 디렉토리를 정기적으로 청소하지만 (부팅 및/또는 cron 작업 사용) 자주 발생하지는 않습니다. 방대한 양의 임시 파일을 누출시키는 sysadmin에게 더 귀찮은 몇 가지 사항이 있습니다. –

+2

파이썬의 ['tempfile.TemporaryFile'] (https://docs.python.org/2/library/tempfile.html#tempfile.TemporaryFile)을'with' 문에 사용하여 자동으로 정리되는 임시 파일을 생성 할 수 있습니다 'with' 블록을 종료하자마자 :'with tempfile.TemporaryFile() as tmp : ...'. 이것은 처리되지 않은 예외로 인해 코드가 종료 된 경우에도 작동하므로 'try ... finally'댄스를 직접 수행 할 필요가 없습니다. –

+0

@ LukasGraf, 그렇다면 왜이 $ TEMP 폴더 메커니즘이 필요합니까? – histrio

답변

0

에 일반적으로, 당신은 당신이 만드는 임시 파일을 제거해야합니다.

$ TEMP 디렉토리는 다른 프로그램에서 사용할 수있는 공유 리소스입니다. 임시 파일을 제거하지 않으면 $ TEMP를 사용하는 다른 프로그램에 영향을 미칩니다.

어떤 종류의 영향입니까? 그것은 다른 프로그램에 달려 있습니다. 다른 프로그램에서 많은 임시 파일을 만드는 경우 파일 이름이 고유한지 확인하기 위해 임시 파일을 만들 때마다 디렉토리를 검색해야하므로 새 임시 파일을 만드는 데 시간이 오래 걸리므로 실행 속도가 느려집니다.

다음을 고려하십시오 (실제 이벤트를 기반으로) ... 지난 몇 년 동안 우리 그룹은 인텔 C 컴파일러를 사용해야했습니다. 시간이 지남에 따라 속도가 느려진 것으로 나타났습니다. 즉, 그것을 사용하여 우리의 정신 테스트를 실행하는 데 걸리는 시간이 오래 걸렸습니다. 이는 또한 단일 C 파일을 작성/컴파일하는 데에도 적용됩니다. 우리는 문제를 추적했습니다.
ICC는 $ TEMP 아래의 모든 파일을 열고, stat'ing하고, 읽었습니다. 어떤 목적으로, 나는 모른다. 문제가 ICC에 있다고 주장 할 수는 있지만, $ TEMP 아래에 파일이 존재하면 속도가 느려지고 개발 팀이 다운되었습니다. 이러한 임시 파일을 삭제하면 2 시간이 아닌 30 분 이내에 온 전성 검사가 실행되므로 상당한 시간을 절약 할 수 있습니다.

희망이 도움이됩니다.

1

일반적인 규칙이 없으며 공통 규칙이 없습니다. 대부분의 OS에서는 임시 폴더에있는 파일들이 쌓일 것입니다. 일부 시스템에서는 잠시 후 자동으로 파일을 삭제하지만이를 방지하기 위해 시도하지만 시간이 오래 걸리는 프로세스 또는 충돌 백업과 같이 슬픔을 유발할 수 있습니다.

$TEMP의 이유는 1970 년대의 "수퍼 컴퓨터"에는 수 킬로바이트의 RAM (예, N)이 있었기 때문에 많은 프로그램 (특히 RAM이 부족한 초기시기)에 임시 데이터를 저장할 장소가 필요했기 때문입니다. * 1024 바이트. N은 < < 100입니다. 마우스 커서의 이미지를 마우스 커서에 맞출 수 없습니다. 1980 년경, 64KB가 많이있었습니다.

해결책은 누구나 쓸 수있는 폴더였습니다. 보안은 그 당시 문제가 아니 었습니다.

시간이 지남에 따라 OS는 임시 파일을 만들고 정리할 수있는 더 나은 시스템을 갖기 시작했지만 이전 버전과의 호환성으로 깨끗한 "모든 것을위한"해결책을 얻지 못했습니다.

데이터가 끝나는 곳을 알더라도 직접 파일을 정리해야합니다. 오류 분석을 더 쉽게하기 위해 파일을 모든 것이 정상적으로 삭제되는 방식으로 코드를 작성하는 경향이 있습니다. 즉, 중간 결과를보고 잘못된 것을 파악할 수 있습니다. 그러나 로깅은 종종 더 좋고 안전한 솔루션입니다.

관련이 : 램의 Memory prices 1957-2014 12킬로바이트는, 미국 $ 4'680 비용 않았다 - 1973

관련 문제