Spec-Zone.ru › C++

std::tmpnam

Объявлено в заголовочном файле <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

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/c/tmpnam

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API