| |||||
| |||||
![]() |
|||||
|
TMPNAM
3
2008-08-06
Linux Programmer's Manual
tmpnam () function returns a pointer to a string that is a valid filename, and such that a file with this name did not exist at some point in time, so that naive programmers may think it a suitable name for a temporary file. If the argument s is NULL this name is generated in an internal static buffer and may be overwritten by the next call to tmpnam (). If s is not NULL, the name is copied to the character array (of length at least L_tmpnam ) pointed to by s and the value s is returned in case of success. The pathname that is created, has a directory prefix P_tmpdir . (Both L_tmpnam and P_tmpdir are defined in <stdio.h> , just like the TMP_MAX mentioned below.)
tmpnam () function returns a pointer to a unique temporary filename, or NULL if a unique name cannot be generated.
POSIX.1-2008 marks tmpnam () as obsolete.
tmpnam () function generates a different string each time it is called, up to TMP_MAX times. If it is called more than TMP_MAX times, the behavior is implementation defined. Although tmpnam () generates names that are difficult to guess, it is nevertheless possible that between the time that tmpnam () returns a pathname, and the time that the program opens it, another program might create that pathname using open(2) , or create it as a symbolic link. This can lead to security holes. To avoid such possibilities, use the open(2) O_EXCL flag to open the pathname. Or better yet, use mkstemp(3) or tmpfile(3) . Portable applications that use threads cannot call tmpnam () with a NULL argument if either _POSIX_THREADS or _POSIX_THREAD_SAFE_FUNCTIONS is defined. A POSIX draft proposed to use a function tmpnam_r () defined by char *
Use mkstemp(3) or tmpfile(3) instead.
man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/. | |||||
|
| |||||