Spec-Zone.ru › C++

std::tmpnam

Defined in header <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/w/cpp/io/c/tmpnam

Spec-Zone.ru

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