TMPNAM(3S) TMPNAM(3S) НАЗВАНИЕ tmpnam, tempnam - создание имен временных файлов СИНТАКСИС |#include | |char *tmpnam (s) |char *s; | |char *tempnam (dir, pfx) |char *dir, *pfx; ОПИСАНИЕ С помощью этих функций создаются имена, которые можно без опасений использовать для именования временных фай- лов. Функция tmpnam всегда образует имя файла, используя маршрутный префикс, определяемый константой P_tmpdir во включаемом файле . Если указатель s пустой (равен NULL), то функция помещает результат во внутрен- нюю статическую область и возвращает адрес этой облас- ти. При следующем вызове tmpnam содержимое статической области изменится. Если s не равно NULL, то его значе- ние рассматривается как адрес массива длины не менее L_tmpnam байт, где L_tmpnam - константа, определенная в ; функция помещает результат в этот массив и возвращает s. Функция tempnam дает пользователю возможность выбирать каталог. Аргумент dir указывает на имя каталога, в ко- тором нужно создать файл. Если dir равен NULL или ссы- лается на цепочку символов, не являющуюся именем подхо- дящего каталога, то имя строится с использованием конс- танты P_tmpdir. Если и этот каталог недоступен, в ка- честве последнего шанса будет использован /tmp. Указан- ная последовательность действий игнорируется, если оп- ределена переменная окружения TMPDIR; именно ее значе- ние задает имя каталога временных файлов. Во многих случаях предпочтительны имена файлов, начина- ющиеся определенной последовательностью символов. Дл создания таких имен предусмотрен аргумент pfx. Этот ар- гумент может иметь значение NULL или быть ссылкой на цепочку длиной до 5 символов, которая должна использо ваться в качестве первых символов имени временного фай ла. Функция tempnam вызывает функцию malloc(3C) для получе- ния области памяти под конструируемое имя, и возвращает ссылку на эту область. Таким образом, значение указате- ля, возвращаемого функцией tempnam, может служить аргу- ментом функции free [см. malloc(3C)]. Если tempnam по каким-либо причинам не может возвратить ожидаемый ре- зультат (например, неудачно завершилась функция malloc или не удалось найти подходящий каталог), то возвраща ется пустой указатель. ПРИМЕЧАНИЯ При каждом обращении эти функции создают новое имя. Файлы, созданные с помощью описанных функций и функций fopen(3S) или creat(2), являются временными только в том смысле, что они хранятся в каталоге, предназначен- ном для временного использования, и их имена уникальны. Для удаления этих файлов, когда в них отпала необходи- мость, пользователь должен применить системный вызов unlink(2). СМ. ТАКЖЕ creat(2), unlink(2), fopen(3S), malloc(3C), mktemp(3C), tmpfile(3S). ОГРАНИЧЕНИЯ При вызове более 17576 раз в одном процессе эти функции начнут циклически выдавать уже созданные ранее имена. В промежутке между образованием имени файла и его отк рытием другой процесс может создать файл с тем же име- нем. Этого никогда не случится, если упомянутый "дру гой" процесс создает файл с помощью описываемых функций или функции mktemp, а имена файлов выбираются так, что- бы дублирование по другим причинам было маловероятным.