table of contents
other versions
- wheezy 3.44-1
- jessie 3.74-1
- jessie-backports 4.10-2~bpo8+1
- testing 4.10-2
- unstable 4.10-2
other languages
TEMPNAM(3) | Linux Programmer's Manual | TEMPNAM(3) |
NAME¶
tempnam - create a name for a temporary fileSYNOPSIS¶
#include <stdio.h>char *tempnam(const char *dir, const char *pfx);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
DESCRIPTION¶
The tempnam() function returns a pointer to a string that is a valid filename, and such that a file with this name did not exist when tempnam() checked. The filename suffix of the pathname generated will start with pfx in case pfx is a non-NULL string of at most five bytes. The directory prefix part of the pathname generated is required to be "appropriate" (often that at least implies writable).- a)
- In case the environment variable TMPDIR exists and contains the name of an appropriate directory, that is used.
- b)
- Otherwise, if the dir argument is non-NULL and appropriate, it is used.
- c)
- Otherwise, P_tmpdir (as defined in <stdio.h>) is used when appropriate.
- d)
- Finally an implementation-defined directory may be used.
RETURN VALUE¶
The tempnam() function returns a pointer to a unique temporary filename, or NULL if a unique name cannot be generated.ERRORS¶
- ENOMEM
- Allocation of storage failed.
CONFORMING TO¶
SVr4, 4.3BSD, POSIX.1-2001. POSIX.1-2008 marks tempnam() as obsolete.NOTES¶
Although tempnam() generates names that are difficult to guess, it is nevertheless possible that between the time that tempnam() 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).BUGS¶
The precise meaning of "appropriate" is undefined; it is unspecified how accessibility of a directory is determined.SEE ALSO¶
mkstemp(3), mktemp(3), tmpfile(3), tmpnam(3)COLOPHON¶
This page is part of release 3.44 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.2008-08-06 |