mkstemp()

Создать уникальный временный файл и открыть его

Прототип:

#include <stdlib.h>
int mkstemp( char *template );

Аргументы:

template
Шаблон имени файла, который необходимо использовать. Этот шаблон может быть любым именем файла с добавленным к нему некоторым количеством символов X, например, /tmp/temp.XXXX.

Библиотека:

libc

Описание:

Функция mkstemp() берёт заданный шаблон имени файла и перезаписывает его часть для создания имени файла. Это имя файла является уникальным и подходит для использования приложением. Хвост заменяется текущим номером процесса и/или уникальной комбинацией букв. Количество уникальных имён файлов, которые может вернуть mkstemp(), зависит от количества предоставленных символов X. Например, если будет указано шесть X, mkstemp() проверит примерно 26⁶ комбинаций.

Функция mkstemp() (в отличие от mktemp()) создаёт файл шаблона, права доступа 0600 (т.е. чтение-запись для владельца), и возвращает дескриптор файла, открытый для чтения и записи. Это позволяет избежать гонки между проверкой существования файла и его открытием для использования.

Возвращаемое значение:

Дескриптор временного файла. Если возникла ошибка, функция возвращает -1, а код ошибки записывается в errno.

Коды ошибок:

ENOTDIR
Часть пути шаблона не является существующим каталогом.

Эта функция также может установить errno в любое значение, заданное функциями open() и stat().

Классификация:

POSIX 1003.1 X/Open Systems Interfaces Extension

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Предостережения:

Буквы могут закончиться. Функция mkstemp() не проверяет, превышает ли часть шаблона, относящаяся к имени файла, максимально допустимую длину имени файла.

Для совместимости со стандартами X/Open до стандарта XPG4v2, используйте вместо этого tmpfile().

Тематические ссылки:

chmod(). getpid(). mktemp(), open() stat(). tmpfile(), tmpnam()




Предыдущий раздел: Описание API системной библиотеки