MKTEMP(3)

НАЗВАНИЕ
mktemp - создает уникальное временное имя файла

СИНТАКСИС
#include <stdlib.h>

char *mktemp(char *template);

ОПИСАНИЕ
Функция mktemp() создает уникальное временное имя файла по шаблону template. Последние шесть символов template должны быть XXXXXX, и именно они заменяются строкой, которая делает имя файла уникальным. Так как она будет меняться, то template не может быть строковой константой, а должна быть определена как символьный массив.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция mktemp() возвращает NULL при ошибках (template не заканчивается на XXXXXX) или template в другом случае. Если работа завершена нормально, то последние шесть байтов template будут изменены таким образом, что созданное имя файла будет уникальным (ранее не существовавшим). Если вызов был неуспешным, то template будет пустой строкой.

НАЙДЕННЫЕ ОШИБКИ

EINVAL
    - последние шесть символов template не являлись XXXXXX.

СООТВЕТСТВИЕ СТАНДАРТАМ
BSD 4.3. POSIX требует tmpnam(3).

ЗАМЕЧАНИЯ
Прототип данной функции находится в <unistd.h> (для libc4, libc5, glibc1); glibc2 соответствует "Single Unix Specification" и имеет прототип в <stdlib.h>.

НАЙДЕННЫЕ ОШИБКИ
Никогда не используйте mktemp(). Некоторые реализации следуют BSD 4.3 и заменяют XXXXXX на идентификатор текущего процесса и один символ, так что Вы можете в результате получить максимум 26 разных имен. Так как, с одной стороны, имена легко угадываемы, а с другой стороны, возможно "состязание" между проверкой на существование имени файла и открытием файла при каждом использовании mktemp(), то безопасность системы будет под угрозой. Этого можно избежать при использовании функции mkstemp(3).

СМ. ТАКЖЕ
mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3)