.\" Copyright (C) 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" Se autoriza hacer y distribuir copias literales de este manual siempre .\" que el aviso de copyright y este aviso de autorización se preserven en .\" todas las copias. .\" .\" Se autoriza copiar y distribuir versiones modificadas de este manual .\" bajo las condiciones para copiar literalmente, siempre que todo el trabajo .\" resultante sea distribuido bajo los términos de un aviso de autorización .\" idéntico a éste. .\" .\" Ya que el kernel y las bibliotecas de Linux están cambiando .\" constantemente, esta página de manual puede ser incorrecta u obsoleta. .\" El(Los) autor(es) no asumen ninguna responsabilidad de los errores u .\" omisiones, o de los daños resultantes del uso de la información contenida .\" aquí. El(Los) autor(es) pueden no haber tomado el mismo nivel de cuidado en .\" la producción de este manual, que es licenciado gratuitamente, como el que .\" podrían haber tomado trabajando profesionalmente. .\" .\" Las versiones procesadas o tratadas de este manual que no se acompañen .\" con los fuentes deben reconocer el copyright y los autores de este trabajo. .\" .\" Referencias consultadas: .\" Código fuente de la libc de Linux .\" Guía del Programador _POSIX de Lewine (O'Reilly & Associates, 1991) .\" páginas 'man' de 386BSD .\" Modificado el Sábado 24 de Julio de 1993 a las 18:48:48 por Rik Faith (faith@cs.unc.edu) .\" Modificado el 10 Marzo 1998, aeb .\" Traducción revisada el 17 Agosto 1998 por Juan Piernas .\" Modificado el 28 de marzo de 1999 por aeb .\" Traducción revisada el 6 de abril de 1999 por .\" Juan Piernas .\" Traducción revisada por Miguel Pérez Ibars el 29-marzo-2005 .\" .TH MKSTEMP 3 "23 diciembre 2001" "GNU" "Manual del Programador de Linux" .SH NOMBRE mkstemp \- crea un fichero temporal único (no repetido) .SH SINOPSIS .nf .B #include .sp .BI "int mkstemp(char *" template ); .fi .SH DESCRIPCIÓN La función \fBmkstemp()\fP genera un nombre de fichero temporal único a partir de \fItemplate\fP. Los últimos seis caracteres de \fItemplate\fP deben ser XXXXXX y éstos son reemplazados con una cadena que hace que el nombre no esté repetido. El fichero es entonces creado en modo de lectura/escritura y los permisos 0666 (glibc 2.0.6 y anteriores) o 0600 (glibc 2.0.7 y posteriores). Ya que será modificada, .I template no debe ser una cadena constante sino que se debería declarar como un array de caracteres. El fichero se abre con la opción O_EXCL, garantizando que cuando .B mkstemp termine con éxito seremos el único usuario. .SH "VALOR DEVUELTO" La función \fBmkstemp()\fP devuelve el descriptor de fichero (fd) del fichero temporal creado o \-1 en caso de error. .SH "ERRORES" .TP .B EINVAL Los últimos seis caracteres de \fItemplate\fP no eran XXXXXX. En este caso \fItemplate\fP no se modifica. .TP .B EEXIST No se pudo crear un nombre no repetido de fichero temporal. En este caso el contenido de \fItemplate\fP es indefinido. .SH OBSERVACIONES El comportamiento anterior (crear un fichero con el modo 0666) puede ser un peligro para la seguridad, especialmente porque otras versiones de Unix usan 0600 y alguien podría pasar por alto este detalle al portar programas. De manera más general, la especificación de POSIX no dice nada sobre los modos de los ficheros, por lo que la aplicación debería asegurarse de que su máscara \fIumask\fP tenga un valor apropiado antes de llamar a .BR mkstemp . .SH "CONFORME A" BSD 4.3, POSIX 1003.1-2001 .SH NOTA El prototipo se encuentra en .I para libc4, libc5 y glibc1; glibc2 sigue `the Single Unix Specification' y tiene el prototipo en .IR . .SH "VÉASE TAMBIÉN" .BR mkdtemp "(3), " mktemp "(3), " tmpnam "(3), " tempnam "(3), " tmpfile (3)