Функция mktemp() создает уникальное временное имя файла
по шаблону template. Последние шесть символов template должны
быть XXXXXX, и именно они заменяются строкой, которая делает имя файла
уникальным. Так как она будет меняться, то
template
не может быть строковой константой,
а должна быть определена как символьный массив.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция mktemp() возвращает NULL при ошибках (template
не заканчивается на XXXXXX) или template в другом случае.
Если работа завершена нормально, то последние шесть байтов template
будут изменены таким образом, что созданное имя файла будет уникальным
(ранее не существовавшим). Если вызов был неуспешным, то template
будет пустой строкой.
НАЙДЕННЫЕ ОШИБКИ
EINVAL
- последние шесть символов template не являлись XXXXXX.
Прототип данной функции находится в
<unistd.h>
(для libc4, libc5, glibc1); glibc2 соответствует "Single Unix Specification"
и имеет прототип в
<stdlib.h>.
НАЙДЕННЫЕ ОШИБКИ
Никогда не используйте mktemp(). Некоторые реализации следуют BSD 4.3
и заменяют XXXXXX на идентификатор текущего процесса и один символ,
так что Вы можете в результате получить максимум 26 разных имен.
Так как, с одной стороны, имена легко угадываемы, а с другой стороны,
возможно "состязание" между проверкой на существование имени файла
и открытием файла при каждом использовании mktemp(), то
безопасность системы будет под угрозой.
Этого можно избежать при использовании функции
mkstemp(3).