mktemp - создаёт
уникальное
имя для
временного
файла
Standard C library (
libc,
-lc)
#include <stdlib.h>
char *mktemp(char *template);
mktemp():
Since glibc 2.12:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200112L)
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
Before glibc 2.12:
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
Никогда не
используйте
эту
функцию;
см. ДЕФЕКТЫ
Функция
mktemp()
генерирует
на основе
шаблона
template
уникальное
имя для
временного
файла.
Последние
шесть
символов
template должны
быть равны
XXXXXX, они будут
заменены
на строку,
которая
сделает
имя файла
уникальным.
Так как
template
будет
меняться,
он должен
быть
объявлен
не
строковой
константой,
а массивом
символов.
Функция
mktemp()
всегда
возвращает
template. При
создании
уникального
имени
последние
шесть
байтов
template
заменяются
так, что имя
становится
уникальным
(то есть,
такого
имени ещё
нет). Если
уникальное
имя
невозможно
создать,
template
будет
равно
пустой
строке, а
errno
будет
назначен
код ошибки.
- EINVAL
- Последние
шесть
символов
template не равны
XXXXXX.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
mktemp() |
Безвредность
в нитях |
MT-Safe |
4.3BSD, POSIX.1-2001. В POSIX.1-2008
спецификация
mktemp() удалена.
Никогда не
используйте
mktemp().
Некоторые
реализации
следуют 4.3BSD и
заменяют XXXXXX
текущим ID
процесса и
одним
символом,
поэтому
может быть
возвращено
только 26
уникальных
имен. С
одной
стороны
такие
имена
легко
подобрать,
а с другой
есть
вероятность
возникновения
состязательности
при
проверке
существования
имени и
открытия
файла,
поэтому
каждое
использование
mktemp()
является
угрозой
безопасности.
Состязательность
не может
возникнуть,
если
использовать
функции
mkstemp(3)
и
mkdtemp(3).
mktemp(1),
mkdtemp(3),
mkstemp(3),
tempnam(3),
tmpfile(3),
tmpnam(3)
Русский
перевод
этой
страницы
руководства
был сделан
aereiae <
[email protected]>, Alexey <
[email protected]>, Azamat
Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
ITriskTI <
[email protected]>, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]>, Иван
Павлов <
[email protected]>
и Малянов
Евгений
Викторович
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]