tmpnam(3C)




NAME

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


SYNOPSIS

     #include <stdio.h>

     char *tmpnam(char *s);

     char *tmpnam_r(char *s);

     char *tempnam(const char *dir, const char *pfx);


DESCRIPTION

     These functions generate file names that can be used  safely
     for a temporary file.

  tmpnam()
     The tmpnam() function always generates a file name using the
     path  prefix defined as P_tmpdir in the <stdio.h> header. On
     Solaris  systems,  the  default  value   for   P_tmpdir   is
     /var/tmp.   If  s  is NULL, tmpnam() leaves its result in an
     internal static area and returns a pointer to that area. The
     next call to tmpnam() will destroy the contents of the area.
     If s is not NULL, it is assumed to  be  the  address  of  an
     array  of  at least L_tmpnam bytes, where L_tmpnam is a con-
     stant defined in <stdio.h>;  tmpnam() places its  result  in
     that array and returns s.

  tmpnam_r()
     The  tmpnam_r()  function  has  the  same  functionality  as
     tmpnam()  except  that  if s is a null pointer, the function
     returns NULL.

  tempnam()
     The tempnam() function allows the user to control the choice
     of  a  directory. The argument dir points to the name of the
     directory in which the file is to be created. If dir is NULL
     or  points to a string that is not a name for an appropriate
     directory, the  path  prefix  defined  as  P_tmpdir  in  the
     <stdio.h>  header is used. If that directory is not accessi-
     ble, /tmp is used. If, however, the TMPDIR environment vari-
     able  is set in the user's environment, its value is used as
     the temporary-file directory.

     Many applications prefer that temporary files  have  certain
     initial character sequences in their names. The pfx argument
     may be NULL or point to a string of up to five characters to
     be  used  as  the  initial  characters of the temporary-file
     name.

     Upon successful completion,  tempnam()  uses  malloc(3C)  to
     allocate  space for a string, puts the generated pathname in
     that space, and returns a pointer  to  it.  The  pointer  is
     suitable  for  use  in a subsequent call to free(). If temp-
     nam() cannot return the expected result for any reason  (for
     example, malloc() failed), or if none of the above-mentioned
     attempts to find an appropriate directory was successful,  a
     null  pointer  is  returned and errno is set to indicate the
     error.


ERRORS

     The tempnam() function will fail if:

     ENOMEM
           Insufficient storage space is available.


USAGE

     These functions generate a different  file  name  each  time
     they are called.

     Files created using these functions and either fopen(3C)  or
     creat(2) are temporary only in the sense that they reside in
     a directory intended for temporary use, and their names  are
     unique.  It  is the user's responsibility to remove the file
     when its use is ended.

     If called more than TMP_MAX (defined in <stdio.h>) times  in
     a single process, these functions start recycling previously
     used names.

     Between the time a file name is  created  and  the  file  is
     opened,  it  is  possible for some other process to create a
     file with the same name. This can never happen if that other
     process  is using these functions or mktemp(3C) and the file
     names are  chosen  to  render  duplication  by  other  means
     unlikely.

     The tmpnam() function is unsafe  in  multithreaded  applica-
     tions.   The  tempnam()  function  is  safe in multithreaded
     applications and should be used instead.

     When compiling multithreaded applications,  the   _REENTRANT
     flag  must be defined on the compile line.  This flag should
     be used only with multithreaded applications.


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | See USAGE above.            |
    |_____________________________|_____________________________|


SEE ALSO

     creat(2),  unlink(2),   fopen(3C),   free(3C),   malloc(3C),
     mktemp(3C), tmpfile(3C), attributes(5)


Man(1) output converted with man2html