Временный файл
Вре́менный файл — файл, создаваемый определённой программой или операционной системой для сохранения промежуточных результатов в процессе функционирования или передачи данных в другую программу. Обычно такие файлы удаляются автоматически создавшим их процессом.
Многие операционные системы имеют дополнительные возможности при работе с временными файлами:
- возможность получить имя временного файла, причём такое, которое будет уникальным — то есть не совпадёт с именем уже существующего файла;
- требование создать файл только с нуля — ОС выдаст ошибку, если файл существует, и тогда программе придётся отыскать другое имя (флаг
xв Си, режимCREATE_NEWв Win32); - требование удалить файл, когда все программы его закроют (флаг
FILE_FLAG_DELETE_ON_CLOSEв Win32).
В Unix-подобных операционных системах для временных файлов выделен отдельный каталог /tmp. Данные в этом каталоге интенсивно кешируются, а также (во многих системах) удаляются при загрузке операционной системы.
Назначение
- Дополнительная память
- Все современные ОС используют файл подкачки.
- Программы, работающие с большим количеством данных — например, видеоредакторы — могут создавать множество временных файлов.
- Промежуточный результат в цепочке запуска программ
- Так, цепочка сборки любого компилятора имеет вид вроде
file.cpp → file.o → file.exe. Средний из них, так называемый объектный файл, по сути временный.
- Как дисковый кэш, чтобы не делать расчёт/загрузку второй раз
- Потому программы сборки обычно не удаляют промежуточные файлы: можно будет не компилировать их второй раз.
- Межпроцессная коммуникация
- Причин использовать именно такую архитектуру коммуникации много: более сложная коммуникация недоступна; связь между программами на разных компьютерах через общий сетевой диск и даже интернет-диск вроде Dropbox.
- Microsoft Office может сообщать своим копиям с других компьютеров, кто занял файл.
- Использовалось в утилитах запуска Doom: командная строка DOS ограничивалась 128 байтами, но в Doom имелся параметр
@filename.ext, позволявший обойти это ограничение.
- Нужно любой ценой сохранить данные при аппаратно-программном сбое
- Например, перезаписывая файл, программа может создать новый с временным именем, и если создание удастся, удалить старый и переименовать новый.
- Творческие программы (Corel Draw) могут автоматически сохранять файлы под временными именами, чтобы при сбое вернуться к подобной копии.
- Во встраиваемых СУБД добиваются требований ACID именно через временные файлы, используя механизмы надёжности, имеющиеся в ОС и файловых системах.
- Запуск файлов — как программ, так и по ассоциации
- Используется браузерами, если сам браузер не умеет просматривать файл и нужно запустить внешнюю программу.
- Такая система распространена для драйверов Windows: для распространения программ через интернет удобен один большой исполняемый файл, а именно для драйвера годится не каждый генератор инсталляторов. Так что самоизвлекающийся архив распаковывает собранный в нужной программе инсталлятор во временный каталог, а затем запускает его.
- В таком виде удобно хранить кэш обновлений ПО
- Комбинация приведённых причин. Обновления зачастую велики. Их нужно докачивать с того места, откуда прервали. Иногда служба обновления ПО срабатывает при запуске программы или загрузке/завершении ОС, и проще всего передать ей информацию именно через файлы. Иногда (браузер Vivaldi, текстовый редактор Notepad++) обновление — программа, которую нужно запустить.
Местоположение
Временные файлы ОС Windows можно найти в следующих каталогах:
%SystemRoot%\Temp
%SystemRoot% — каталог, в который установлена Windows.
%HomeDrive%%HomePath%\Temp
%HomeDrive% — по умолчанию C: %HomePath% — \Documents and Settings\<имя пользователя> (по умолчанию в Windows XP).
то же что и предыдущее (при настройках по умолчанию):
%TMP%
%TEMP%
Кроме того временные файлы могут находиться в текущем каталоге.
Или, в Unix-подобных операционных системах,
/tmp
или
~/tmp
(где ~ — ссылка на домашний каталог пользователя).