Provided by: manpages-posix-dev_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of
       this interface may differ (consult the corresponding Linux  manual  page  for  details  of
       Linux behavior), or the interface may not be implemented on Linux.

NAME

       tmpnam — create a name for a temporary file

SYNOPSIS

       #include <stdio.h>

       char *tmpnam(char *s);

DESCRIPTION

       The functionality described on this reference page is aligned with the ISO C standard. Any
       conflict between the requirements described here and the ISO C standard is  unintentional.
       This volume of POSIX.1‐2008 defers to the ISO C standard.

       The  tmpnam() function shall generate a string that is a valid pathname that does not name
       an existing file. The function is potentially capable of  generating  {TMP_MAX}  different
       strings,  but  any  or all of them may already be in use by existing files and thus not be
       suitable return values.

       The tmpnam() function generates a different string each time it is called  from  the  same
       process, up to {TMP_MAX} times. If it is called more than {TMP_MAX} times, the behavior is
       implementation-defined.

       The implementation shall behave as if no function defined in this volume of  POSIX.1‐2008,
       except tempnam(), calls tmpnam().

       The tmpnam() function need not be thread-safe if called with a NULL parameter.

RETURN VALUE

       Upon  successful  completion,  tmpnam() shall return a pointer to a string. If no suitable
       string can be generated, the tmpnam() function shall return a null pointer.

       If the argument s is a null pointer, tmpnam() shall leave its result in an internal static
       object  and  return  a pointer to that object. Subsequent calls to tmpnam() may modify the
       same object. If the argument s is not a null pointer, it is presumed to point to an  array
       of at least L_tmpnam chars; tmpnam() shall write its result in that array and shall return
       the argument as its value.

ERRORS

       No errors are defined.

       The following sections are informative.

EXAMPLES

   Generating a Pathname
       The following example generates a unique pathname and stores it in the array pointed to by
       ptr.

           #include <stdio.h>
           ...
           char pathname[L_tmpnam+1];
           char *ptr;

           ptr = tmpnam(pathname);

APPLICATION USAGE

       This function only creates pathnames. It is the application's responsibility to create and
       remove the files.

       Between the time a pathname is created and the file is opened, it  is  possible  for  some
       other  process  to create a file with the same name.  Applications may find tmpfile() more
       useful.

       Applications should use the tmpfile(), mkstemp(), or mkdtemp() functions  instead  of  the
       obsolescent tmpnam() function.

RATIONALE

       None.

FUTURE DIRECTIONS

       The tmpnam() function may be removed in a future version.

SEE ALSO

       fopen(), open(), mkdtemp(), tempnam(), tmpfile(), unlink()

       The Base Definitions volume of POSIX.1‐2008, <stdio.h>

COPYRIGHT

       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1, 2013 Edition, Standard for Information Technology  --  Portable  Operating  System
       Interface  (POSIX),  The Open Group Base Specifications Issue 7, Copyright (C) 2013 by the
       Institute of Electrical and Electronics Engineers, Inc  and  The  Open  Group.   (This  is
       POSIX.1-2008  with  the  2013  Technical  Corrigendum  1  applied.)  In  the  event of any
       discrepancy between this version and the original IEEE and The Open  Group  Standard,  the
       original  IEEE  and The Open Group Standard is the referee document. The original Standard
       can be obtained online at http://www.unix.org/online.html .

       Any typographical or formatting errors that appear in this page are most  likely  to  have
       been  introduced  during  the conversion of the source files to man page format. To report
       such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .