- Где находится временный каталог в Linux?
- /tmp : Временные файлы
- /var/tmp : Временные файлы сохраняются между перезагрузками системы
- 2.1.7. Временные файлы
- Читайте также
- Временные характеристики процесса
- Пример: временные характеристики процессов
- Временные серверы для Linux
- 7. Временные рамки
- Временные диаграммы усилителей
- Временные диаграммы
- R.12.2 Временные объекты
- 7.2.6.1. Временные файлы
- 7.2.6.1. Временные файлы
- Исходные файлы и выполняемые файлы
- Временные значения
- Временные таблицы
- Постоянные «временные» таблицы
- Временные файлы проектов
Где находится временный каталог в Linux?
Есть ли в Linux стандартный временный каталог для общего использования, как в Windows’ папка C:\Temp ? Если да, то где она находится? Я нашел [вопрос SO о поиске каталога tmp программным путем] (https://stackoverflow.com/questions/31068/how-do-i-find-the-temp-directory-in-linux), но я хочу задать местоположение temp в XML файле конфигурации заранее.
/tmp : Временные файлы
Каталог /tmp должен быть доступен для программ, которым требуются. временные файлы.
Программы не должны считать, что файлы или каталоги в /tmp сохраняются между вызовами программы.
Обоснование.
В стандарте IEEE POSIX.1-2008 перечислены требования, аналогичные приведенному выше разделу. Хотя данные, хранящиеся в /tmp , могут быть удалены в зависимости от конкретного места, это рекомендуется удалять файлы и каталоги, расположенные в /tmp . при каждой загрузке системы.
FHS добавила эту рекомендацию на основании исторического прецедента и общепринятой > практики. практики, но не сделала ее обязательным требованием, поскольку системное администрирование не входит в область применения настоящего стандарта.
/var/tmp : Временные файлы сохраняются между перезагрузками системы
Каталог /var/tmp доступен для программ, которым требуются временные файлы или каталоги, которые сохраняются между перезагрузками системы. перезагрузками. Поэтому данные, хранящиеся в /var/tmp , являются более постоянными, чем > данные в /tmp . данные в /tmp .
Файлы и каталоги, расположенные в /var/tmp , не должны удаляться при > загрузке системы. загрузке системы. Хотя данные, хранящиеся в /var/tmp , как правило. удаляются в зависимости от конкретного сайта, рекомендуется, чтобы удаления происходить с меньшим интервалом, чем в /tmp .
TMPDIR . Эта переменная должна представлять имя каталога, доступного для программ, которым нужно место для создания временных файлов.
2.1.7. Временные файлы
Иногда программе требуется создать временный файл, например для промежуточного хранения большого объема данных или для передачи данных другой программе. В системах GNU/Linux временные файлы хранятся в каталоге /tmp. Работая с временными файлами, необходимо помнить о следующих ловушках.
? Одновременно может быть запущено несколько экземпляров программы (одним и тем же пользователем или разными пользователями). Все они должны использовать разные имена временных файлов, чтобы не было конфликтов.
? Права доступа к временным файлам должны задаваться таким образом, чтобы неавторизованные пользователи не могли влиять на работу программы путем модификации или замены временного файла.
? Имена временных файлов должны генерироваться так, чтобы посторонние пользователи не могли их предугадать. В противном случае хакер может воспользоваться задержкой между проверкой факта использования данного имени файла и открытием нового временного файла.
В Linux имеются функции mkstemp() и tmpfile(), решающие все вышеперечисленные проблемы. Выбор между ними делается на основании того, должен ли временный файл передаваться другой программе и какие функции ввода-вывода будут применяться при работе с файлом: низкоуровневые (read(), write() и т.д.) или потоковые (fopen(), fprintf() и т.д.).
Функция mkstemp() генерирует уникальное имя файла на основании переданного ей шаблона, создает временный файл с правами, разрешающими доступ к нему только для текущего пользователя, и открывает файл в режиме чтения/записи. Шаблон имени — это строка, оканчивающаяся последовательностью «XXXXXX» (шесть прописных букв «X»). Функция mkstemp() заменяет каждую букву произвольным символом таким образом, чтобы получилось уникальное имя, и возвращает дескриптор файла. Запись в файл осуществляется с помощью функций семейства write().
Временные файлы, создаваемые функцией mkstemp(), не удаляются автоматически. Ответственность за это возлагается на того, кто запускает программу. (Программисты должны внимательно следить за удалением временных файлов, иначе файловая система /tmp рано или поздно переполнится, приведя всю систему в нерабочее состояние.) Если файл создан для внутреннего использования и не предназначен для передачи другой программе, по окончании работы с ним нужно сразу же вызвать функцию unlink(). Она удаляет из каталога ссылку на файл, но сам файл остается до тех пор, пока не будут закрыты все ссылающиеся на него дескрипторы. Таким образом, программа может продолжать использовать временный файл; он будет удален автоматически сразу после закрытия дескриптора. Операционная система закрывает дескрипторы файлов по окончании работы программы, так что временный файл будет удален даже в случае аварийного завершения программы.
В листинге 2.5 показаны две функции, работающие с временным файлом. Будучи примененными в связке, они позволяют легко переносить содержимое буферов из операторной памяти во временный файл (это дает возможность освобождать и повторно использовать память), а затем загружать данные из файла обратно в память.
Листинг 2.5. (temp_file.c) Использование функции mkstemp()
/* дескриптор временного файла, созданного в функции
typedef int temp_file_handle;
/* Запись указанного числа байтов из буфера во временный файл.
Ссылка на временный файл немедленно удаляется. Возвращается
дескриптор временного файла. */
temp_file_handle write_temp_file(char* buffer, size_t length)
/* Создание имени файла и самого файла. Цепочка XXXXXX будет
заменена символами, которые сделают имя уникальным. */
char temp_filename() = «/tmp/temp_file.XXXXXX»;
int fd = mkstemp(temp_filename);
/* немедленное удаление ссылки на файл, благодаря чему он будет
удален сразу же после закрытия дескриптора файла. */
/* Сначала в файл записывается число, определяющее размер
/* теперь записываем сами данные. */
/* Возвращаем дескриптор файла. */
/* Чтение содержимого временного файла, созданного в функции
write_temp_file(). Создается и возвращается буфер с содержимым
файла. Этот буфер должен быть удален в вызывающей подпрограмме
с помощью функции free(). В параметр LENGTH записывается размер
буфера в байтах. В конце временный файл удаляется. */
char* read_temp_file(temp_file_handle temp_file, size_t* length)
/* TEMP_FILE — это дескриптор временного файла. */
/* Определение объема данных, содержащихся во временном файле. */
read(fd, length, sizeof(*length));
/* Выделение буфера и чтение данных. */
/* Закрытие дескриптора файла, что приведет к уничтожению
Если в программе используются функции потокового ввода-вывода библиотеки языка С и передавать временный файл другой программе не нужно, то для работы с временным файлом больше подойдет функция tmpfile(). Она создает и открывает временный файл, возвращая файловый указатель на него. Ссылка на файл уже оказывается удаленной, благодаря чему он уничтожается автоматически при закрытии указателя (с помощью функции fclose()) или при завершении программы.
В Linux есть ряд других функций, предназначенных для генерирования временных файлов или их имен, в частности mktemp(), tmpnam() и tempnam(). Работать с ними нежелательно, поскольку возникают упоминавшиеся выше проблемы, связанные с надежностью и безопасностью.
Читайте также
Временные характеристики процесса
Временные характеристики процесса Воспользовавшись функцией GetProcessTimes, которая в Windows 9x отсутствует, можно получить различные временные характеристики процесса, а именно: истекшее время (elapsed time), время, затраченное ядром (kernel time), и пользовательское время (user time). BOOL
Пример: временные характеристики процессов
Пример: временные характеристики процессов Наш следующий пример (программа 6.2) представляет собой команду timep (от time print — вывод временных параметров), аналогичную UNIX-команде time (поскольку команда time поддерживается процессором командной строки, мы должны использовать для
Временные серверы для Linux
Временные серверы для Linux Сервер NTP для работы в Linux реализуется с помощью программы ntp или ее разновидностей: xntp, xntp3 и xntpd. Символ x в начале имени означает «экспериментальный» (experimental), что не совсем верно, так как эти программы успешно используются в течение нескольких лет.
7. Временные рамки
7. Временные рамки «Как сделать что-то за 15 минут» – это может быть небольшая статья, где вы даете алгоритм решения той или иной проблемы за три минуты. Это очень хорошее название для статей и видео. Вы планируете записать бесплатный каст на 15 минут, в котором
Временные диаграммы усилителей
Временные диаграммы усилителей Чтобы получить временные диаграммы синусоидального входного напряжения и напряжения на стоке, необходимо несколько изменить входной файл. Входное напряжение задается синусоидальной функциейvi 1a 0 sin (0 1mV 5kHz)Анализ переходных процессов
Временные диаграммы
Временные диаграммы Чтобы получить временные диаграммы входного и выходного напряжений, необходимо слегка изменить входной файл. Как и в предыдущем примере, будет использовано синусоидальное входное напряжение:Vi 1 0 sin (0 0. 5V 5kHz)Наряду с анализом переходных процессов
R.12.2 Временные объекты
R.12.2 Временные объекты В некоторых ситуациях транслятору бывает необходимо или удобно создавать временные объекты. Использование временных объектов зависит от реализации. Если транслятору понадобился временный объект типа класса с конструктором, он должен обеспечить
7.2.6.1. Временные файлы
7.2.6.1. Временные файлы Использование временных файлов в качестве буферов обмена данными является старейшей из существующих IPC-методик. Несмотря на недостатки, она остается удобной в сценариях командных интерпретаторов и одноразовых программах, где более сложный и
7.2.6.1. Временные файлы
7.2.6.1. Временные файлы Использование временных файлов в качестве буферов обмена данными является старейшей из существующих IPC-методик. Несмотря на недостатки, она остается удобной в сценариях командных интерпретаторов и одноразовых программах, где более сложный и
Исходные файлы и выполняемые файлы
Исходные файлы и выполняемые файлы Наша замечательная программа, несмотря на свою лаконичность и простоту, для компьютера является совершенно бессмысленным набором символов, так как он «не понимает» директив типа #include или printf. Он понимает только специальный язык,
Временные значения
Временные значения CURRENT_CONNECTION и CURRENT_TRANSACTION не имеют смысла вне текущего соединения и контекста транзакции соответственно. Сервер Firebird сохранит самые последние значения этих идентификаторов в заголовочной странице базы данных. После восстановления базы данных из
Временные таблицы
Временные таблицы Firebird не поддерживает временные таблицы, которые управляются системой. Здесь они меньше нужны, чем в других СУБД. Например, у Firebird есть возможность получать виртуальные таблицы напрямую через хранимую процедуру, написанную с использованием
Постоянные «временные» таблицы
Постоянные «временные» таблицы Популярная модель хранения временных данных для доступа приложений — определить постоянную структуру данных, которая включает «идентификатор сессии» или «идентификатор пакета», получающие значение от генератора, или, в Firebird 1.5,значение
Временные файлы проектов
Временные файлы проектов В ходе работы над проектом Studio создает дополнительные файлы, в которые сохраняет промежуточные данные, такие как результат просчета видеоэффектов, переходов и т. д. Впоследствии данные в этих файлах используются для предварительного просмотра и