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, а имена файлов выбираются так, что-
бы дублирование по другим причинам было маловероятным.
|