NOMBRE¶
tempnam - crea un nombre para un fichero temporal
SINOPSIS¶
#include <stdio.h>
char *tempnam(const char *dir, const char *pfj);
DESCRIPCIÓN¶
La función
tempnam() devuelve un puntero a una cadena que es un
nombre válido de fichero tal que no existe un fichero con este nombre
cuando
tempnam() lo comprueba. El sufijo del nombre de fichero de la
ruta generada comenzará con
pfj en el caso de que
pfj sea
una cadena distinta de NULL con al menos 5 bytes. La parte de directorios del
prefijo de la ruta generada necesita ser `adecuada' (normalmente, esto implica
que al menos se pueda escribir). Los pasos que se siguen para intentar
encontrar un directorio adecuado son los siguientes: (i) En el caso de que la
variable de entorno TMPDIR exista y contenga el nombre de un directorio
apropiado, se utiliza ese. (ii) En caso contrario, si el argumento
dir
es distinto de NULL y apropiado, se usa. (iii) En caso contrario,
P_tmpdir (tal y como se define en
<stdio.h>) se usa cuando
sea conveniente. (iv) Finalmente, se puede usar un directorio definido por la
implementación.
VALOR DEVUELTO¶
La función
tempnam() devuelve un puntero al nombre de fichero
único en el sistema o NULL si no se puede generar el nombre.
ERRORES¶
- ENOMEM
- Ha fallado la reserva de memoria.
OBSERVACIONES¶
SUSv2 no menciona el uso de TMPDIR. glibc lo usará sólo cuando el
programa no sea suid. SVID2 especifica que el directorio usado en el caso (iv)
es
/tmp. SVID2 especifica que la cadena que devuelve
tempnam()
se reservó usando
malloc(3) y que, por tanto, puede ser liberada
con
free(3).
La función
tempnam() genera una cadena diferente cada vez que se
llama, hasta TMP_MAX veces (definida en
<stdio.h>). Si se llama
más de TMP_MAX veces, el comportamiento depende de la
implementación.
En el caso de que el argumento
pfj tenga una longitud mayor de 5, glibc
usará los primeros 5 bytes. En el caso de que la búsqueda de un
nombre único falle, glibc devolverá EEXIST.
FALLOS¶
El significado preciso de `adecuado' no está definido. Está sin
especificar cómo se determina la accesibilidad de un directorio. Nunca
use esta función. En su lugar, use
mkstemp(3).
SVID 2, BSD 4.3
VÉASE TAMBIÉN¶
mktemp(3),
mkstemp(3),
tmpfile(3),
tmpnam(3)