Namespaces
Variants

std:: tmpnam

From cppreference.net
< cpp ‎ | io ‎ | c
Определено в заголовочном файле <cstdio>
char * tmpnam ( char * filename ) ;

Создает уникальное имя файла, которое не соответствует существующему файлу, и сохраняет его в строке, на которую указывает filename . Функция способна генерировать до TMP_MAX уникальных имен файлов, но некоторые или все из них могут уже использоваться и поэтому не подходят в качестве возвращаемых значений.

std::tmpnam изменяет статическое состояние и не обязана быть потокобезопасной.

Содержание

Параметры

filename - указатель на массив символов, способный содержать как минимум L_tmpnam байт, используемый в качестве результирующего буфера. Если передан нулевой указатель, возвращается указатель на внутренний статический буфер

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

filename если filename не был нулевым указателем. В противном случае возвращается указатель на внутренний статический буфер. Если подходящее имя файла не может быть сгенерировано, возвращается нулевой указатель.

Примечания

Хотя имена, генерируемые std::tmpnam , сложно угадать, существует вероятность, что файл с таким именем будет создан другим процессом в промежутке между моментом, std::tmpnam возвращает результат и моментом, когда программа попытается использовать возвращённое имя для создания файла. Стандартная функция std::tmpfile и POSIX-функция mkstemp не имеют этой проблемы (создание уникального каталога с использованием только стандартной библиотеки C всё ещё требует применения tmpnam ).

Системы POSIX дополнительно определяют функцию с похожим названием tempnam , которая предоставляет выбор директории (по умолчанию используется опционально определённый макрос P_tmpdir ).

Пример

#include <cstdio>
#include <iostream>
#include <string>
int main()
{
    std::string name1 = std::tmpnam(nullptr);
    std::cout << "temporary file name: " << name1 << '\n';
    char name2[L_tmpnam];
    if (std::tmpnam(name2))
        std::cout << "temporary file name: " << name2 << '\n';
}

Возможный вывод:

temporary file name: /tmp/fileDjwifs
temporary file name: /tmp/fileEv2bfW

Смотрите также

создает и открывает временный файл с автоматическим удалением
(функция)
возвращает каталог, подходящий для временных файлов
(функция)
C documentation для tmpnam