MKSTEMP(3)

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

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

int mkstemp(char *template);

ОПИСАНИЕ
Функция mkstemp() создает временный файл с именем, соответствующим строке из template. Последние шесть символов template должны быть XXXXXX, и именно они заменяются строкой, которая делает имя файла уникальным. Затем создается файл для чтения/записи и уровнями доступа, равными либо 0666 (в glibc 2.0.6 и более ранних версий), либо 0600 (в glibc 2.0.7 и более поздних версий). Так как она будет меняться, то template не может быть строковой константой, а должна быть определена как символьный массив. Файл открывается с флагом O_EXCL, гарантирующим, что при успешном возвращении mkstemp мы будем единственным пользователем.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция mkstemp() возвращает описатель fd временного файла или -1 при ошибках.

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

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

EEXIST
    (нельзя создать уникальное имя временного файла. Содержимое template в этот момент не определено.).

ЗАМЕЧАНИЯ
Прежняя работа функции (создание файла с режимом 0666) могла быть рискованной для системы безопасности, особенно поскольку другие Unix-дополнения используют 0600 и некоторые могли проигнорировать эту особенность при переносе программ. В более общем случае, спецификация POSIX ничего не говорит о режимах файлов, так что приложение должно убедиться перед вызовом mkstemp в том, что его umask установлена правильно.

СООТВЕТСТВИЕ СТАНДАРТАМ
BSD 4.3, POSIX 1003.1-2001

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

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