dwww Home | Manual pages | Find package

tmpnam(3)                   Library Functions Manual                  tmpnam(3)

NAME
       tmpnam, tmpnam_r - create a name for a temporary file

LIBRARY
       Standard C library (libc, -lc)

SYNOPSIS
       #include <stdio.h>

       [[deprecated]] char *tmpnam(char *s);
       [[deprecated]] char *tmpnam_r(char *s);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       tmpnam_r()
           Since glibc 2.19:
               _DEFAULT_SOURCE
           Up to and including glibc 2.19:
               _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION
       Note: avoid using these functions; use mkstemp(3) or tmpfile(3) instead.

       The  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  re-
       turned in case of success.

       The  created  pathname  has a directory prefix P_tmpdir.  (Both L_tmpnam
       and P_tmpdir are defined in <stdio.h>, just like the  TMP_MAX  mentioned
       below.)

       The  tmpnam_r() function performs the same task as tmpnam(), but returns
       NULL (to indicate an error) if s is NULL.

RETURN VALUE
       These functions return a pointer to a unique temporary filename, or NULL
       if a unique name cannot be generated.

ERRORS
       No errors are defined.

ATTRIBUTES
       For an explanation of the terms used in this section, see attributes(7).
       ┌───────────────────────────┬───────────────┬──────────────────────────┐
       │ Interface                 Attribute     Value                    │
       ├───────────────────────────┼───────────────┼──────────────────────────┤
       │ tmpnam()                  │ Thread safety │ MT-Unsafe race:tmpnam/!s │
       ├───────────────────────────┼───────────────┼──────────────────────────┤
       │ tmpnam_r()                │ Thread safety │ MT-Safe                  │
       └───────────────────────────┴───────────────┴──────────────────────────┘

STANDARDS
       tmpnam()
              C11, POSIX.1-2008.

       tmpnam_r()
              None.

HISTORY
       tmpnam()
              SVr4, 4.3BSD, C89, POSIX.1-2001.  Obsolete in POSIX.1-2008.

       tmpnam_r()
              Solaris.

NOTES
       The 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 these functions generate names that are difficult to guess,  it
       is  nevertheless possible that between the time that the pathname is re-
       turned 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 de-
       fined.

BUGS
       Never use these functions.  Use mkstemp(3) or tmpfile(3) instead.

SEE ALSO
       mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)

Linux man-pages 6.9.1              2024-05-02                         tmpnam(3)

Generated by dwww version 1.16 on Tue Dec 16 04:25:31 CET 2025.