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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<cstdio>
|
||
|
char
*
tmpnam
(
char
*
filename
)
;
|
||
Crea un nombre de archivo único que no nombre un archivo existente actualmente, y lo almacena en la cadena de caracteres apuntada por filename . La función es capaz de generar hasta TMP_MAX nombres de archivo únicos, pero algunos o todos pueden estar ya en uso, y por lo tanto no ser valores de retorno adecuados.
std::tmpnam modifica el estado estático y no se requiere que sea seguro para hilos.
Contenidos |
Parámetros
| filename | - | puntero al arreglo de caracteres capaz de contener al menos L_tmpnam bytes, para ser usado como búfer de resultado. Si se pasa un puntero nulo, se devuelve un puntero a un búfer estático interno |
Valor de retorno
filename si filename no era un puntero nulo. De lo contrario, se devuelve un puntero a un búfer interno estático. Si no se puede generar un nombre de archivo adecuado, se devuelve un puntero nulo.
Notas
Aunque los nombres generados por
std::tmpnam
son difíciles de adivinar, es posible que un archivo con ese nombre sea creado por otro proceso entre el momento en que
std::tmpnam
retorna y el momento en que este programa intenta usar el nombre retornado para crear un archivo. La función estándar
std::tmpfile
y la función POSIX
mkstemp
no tienen este problema (crear un directorio único usando únicamente la biblioteca estándar de C todavía requiere el uso de
tmpnam
).
Los sistemas POSIX definen adicionalmente la función de nombre similar
tempnam
, que ofrece la opción de un directorio (que por defecto es el macro opcionalmente definido
P_tmpdir
).
Ejemplo
#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'; }
Salida posible:
temporary file name: /tmp/fileDjwifs temporary file name: /tmp/fileEv2bfW
Véase también
|
crea y abre un archivo temporal que se elimina automáticamente
(función) |
|
|
(C++17)
|
devuelve un directorio adecuado para archivos temporales
(función) |
|
Documentación de C
para
tmpnam
|
|