The Open Group Base Specifications Issue 7
IEEE Std 1003.1-2008, 2016 Edition
Copyright © 2001-2016 The IEEE and The Open Group

#### NAME

> tempnam - create a name for a temporary file

#### SYNOPSIS

> ``[OB XSI] #include <stdio.h>
> char *tempnam(const char *`dir`, const char *`pfx`);``
> `
> `

#### DESCRIPTION

> The tempnam() function shall generate a pathname that may be used for a temporary file.

> The tempnam() function allows the user to control the choice of a directory. The dir argument points to the name of the directory in which the file is to be created. If dir is a null pointer or points to a string which is not a name for an appropriate directory, the path prefix defined as P_tmpdir in the <stdio.h> header shall be used. If that directory is not accessible, an implementation-defined directory may be used.

> Many applications prefer their temporary files to have certain initial letter sequences in their names. The pfx argument should be used for this. This argument may be a null pointer or point to a string of up to five bytes to be used as the beginning of the filename.

> Some implementations of tempnam() may use tmpnam() internally. On such implementations, if called more than {TMP_MAX} times in a single process, the behavior is implementation-defined.

#### RETURN VALUE

> Upon successful completion, tempnam() shall allocate space for a string, put the generated pathname in that space, and return a pointer to it. The pointer shall be suitable for use in a subsequent call to free(). Otherwise, it shall return a null pointer and set errno to indicate the error.

#### ERRORS

> The tempnam() function shall fail if:

> [ENOMEM]
>   Insufficient storage space is available.

The following sections are informative.

#### EXAMPLES

> ##### Generating a Pathname

> The following example generates a pathname for a temporary file in directory /tmp, with the prefix file. After the pathname has been created, the call to free() deallocates the space used to store the pathname.

>     #include <stdio.h>
>     #include <stdlib.h>
>     ...
>     const char *directory = "/tmp";
>     const char *fileprefix = "file";
>     char *file;

>     file = tempnam(directory, fileprefix);
>     free(file);

#### 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(), mkdtemp(), or mkstemp() functions instead of the obsolescent tempnam() function.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

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

#### SEE ALSO

> fopen, free, mkdtemp, open, tmpfile, tmpnam, unlink

> XBD <stdio.h>

#### CHANGE HISTORY

> First released in Issue 1. Derived from Issue 1 of the SVID.

#### Issue 5

> The last paragraph of the DESCRIPTION was included as an APPLICATION USAGE note in previous issues.

#### Issue 7

> The tempnam() function is marked obsolescent.

> POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0657 [291], XSH/TC1-2008/0658 [137], and XSH/TC1-2008/0659 [137] are applied.

End of informative text.

return to top of page

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
Copyright © 2001-2016 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]