tmpnam, tmpnam_r - создаёт
имя для
временного
файла
Standard C library (
libc,
-lc)
#include <stdio.h>
char *tmpnam(char *s);
char *tmpnam_r(char *s);
tmpnam_r()
Since glibc 2.19:
_DEFAULT_SOURCE
Up to and including glibc 2.19:
_BSD_SOURCE || _SVID_SOURCE
Замечание:
не
используйте
эти
функции;
вместо них
используйте
mkstemp(3) или
tmpfile(3).
Функция
tmpnam()
возвращает
указатель
на строку,
содержащую
корректное
имя файла, и
гарантирует,
что файла с
таким
именем не
существует
на момент
вызова, и
наивный
программист
может
считать
это имя
самым
подходящим
для
временного
файла. Если
аргумент
s
равен NULL, это
имя
генерируется
во
внутреннем
статическом
буфере и
может быть
изменено
последующим
вызовом
tmpnam().
Если
s не
равно NULL, то
имя
копируется
в массив
символов
(длиной не
менее
L_tmpnam), на
который
указывает
s, и в случае
успешного
выполнения
возвращается
значение
s.
Созданное
имя файла
содержит
префикс
каталога
P_tmpdir (
L_tmpnam и
P_tmpdir
определены
в
<stdio.h> также,
как
TMP_MAX,
описанная
ниже).
Функция
tmpnam_r()
выполняет
ту же
задачу, что
и
tmpnam(), но
возвращает
NULL (возникла
ошибка),
если
s
равно NULL.
Эти
функции
возвращают
указатель
на
уникальное
имя
временного
файла, либо
NULL, если
уникальное
имя
невозможно
сгенерировать.
Ошибок не
предполагается.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
tmpnam() |
Безвредность
в нитях |
MT-Unsafe race:tmpnam/!s |
tmpnam_r() |
Безвредность
в нитях |
MT-Safe |
tmpnam(): SVr4, 4.3BSD, C99, POSIX.1-2001. POSIX.1-2008 marks
tmpnam() as obsolete.
Функция
tmpnam_r()
является
нестандартным
расширением,
но
доступна и
в
некоторых
других
системах.
Функция
tmpnam()
генерирует
уникальное
имя каждый
раз, до
TMP_MAX
вызовов.
Если она
будет
вызвана
более чем
TMP_MAX раз, то
дальнейшее
поведение
определяется
конкретной
реализацией.
Хотя эти
функции
генерируют
имена,
которые
трудно
подобрать,
тем не
менее, есть
вероятность,
что за
промежуток
времени,
когда
вернётся
имя файла и
программа
откроет
его, другая
программа
успеет
создать с
помощью
open(2)
файл с
таким же
именем или
символическую
ссылку, что
может
привести к
проблемам
с
безопасностью.
Чтобы
исключить
подобную
вероятность,
для
открытия
файла
используйте
open(2) с флагом
O_EXCL. А ещё
лучше —
воспользуйтесь
mkstemp(3) или
tmpfile(3).
Если
определён
_POSIX_THREADS или
_POSIX_THREAD_SAFE_FUNCTIONS, то в
переносимых
приложениях
с нитями
нельзя
вызывать
tmpnam() с
аргументом
NULL.
Никогда не
используйте
эти
функции.
Вместо них
используйте
mkstemp(3) или
tmpfile(3).
mkstemp(3),
mktemp(3),
tempnam(3),
tmpfile(3)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]