1TMPNAM(3)                  Linux Programmer's Manual                 TMPNAM(3)
2
3
4

NAME

6       tmpnam, tmpnam_r - create a name for a temporary file
7

SYNOPSIS

9       #include <stdio.h>
10
11       char *tmpnam(char *s);
12

DESCRIPTION

14       The  tmpnam()  function  returns  a pointer to a string that is a valid
15       filename, and such that a file with this name did  not  exist  at  some
16       point  in  time, so that naive programmers may think it a suitable name
17       for a temporary file. If the argument s is NULL this name is  generated
18       in an internal static buffer and may be overwritten by the next call to
19       tmpnam().  If s is not NULL, the name is copied to the character  array
20       (of  length  at  least  L_tmpnam)  pointed  to  by s and the value s is
21       returned in case of success.
22
23       The pathname that is created, has a directory prefix  P_tmpdir.   (Both
24       L_tmpnam  and  P_tmpdir are defined in <stdio.h>, just like the TMP_MAX
25       mentioned below.)
26

RETURN VALUE

28       The tmpnam() function returns a pointer to a unique temporary filename,
29       or NULL if a unique name cannot be generated.
30

ERRORS

32       No errors are defined.
33

NOTES

35       The  tmpnam()  function  generates  a  different string each time it is
36       called, up to TMP_MAX times. If it is called more than  TMP_MAX  times,
37       the behaviour is implementation defined.
38
39       Although  tmpnam(3)  generates names that are difficult to guess, it is
40       nevertheless possible that between the time that  tmpnam(3)  returns  a
41       pathname, and the time that the program opens it, another program might
42       create that pathname using open(2), or create it as  a  symbolic  link.
43       This  can lead to security holes.  To avoid such possibilities, use the
44       open(2)  O_EXCL  flag  to  open  the  pathname.   Or  better  yet,  use
45       mkstemp(3) or tmpfile(3).
46
47       Portable  applications  that use threads cannot call tmpnam() with NULL
48       parameter if either _POSIX_THREADS or  _POSIX_THREAD_SAFE_FUNCTIONS  is
49       defined.
50
51       A POSIX draft proposed to use a function tmpnam_r() defined by
52
53            char *tmpnam_r(char *s) {
54                return s ? tmpnam(s) : NULL;
55            }
56
57       apparently  as  a warning not to use NULL.  A few systems implement it.
58       To get a glibc prototype for  this  function,  define  _SVID_SOURCE  or
59       _BSD_SOURCE before including <stdio.h>.
60

BUGS

62       Never use this function. Use mkstemp(3) or tmpfile(3) instead.
63

CONFORMING TO

65       SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
66

SEE ALSO

68       mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)
69
70
71
72                                  2003-11-15                         TMPNAM(3)
Impressum