std:: tmpnam
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовочном файле
<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 documentation
для
tmpnam
|
|