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