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
См. также
| создаёт и открывает временный файл с автоматическим удалением (функция) |
|
|
(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