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

#### NAME

> tmpnam - create a name for a temporary file

#### SYNOPSIS

> ``[OB] #include <stdio.h>
> char *tmpnam(char *`s`);``
> `
> `

#### DESCRIPTION

> [CX] 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().

> [CX] 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

> XBD <stdio.h>

#### CHANGE HISTORY

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

#### Issue 5

> The DESCRIPTION is updated for alignment with the POSIX Threads Extension.

#### Issue 6

> Extensions beyond the ISO C standard are marked.

> The normative text is updated to avoid use of the term "must" for application requirements.

> The DESCRIPTION is expanded for alignment with the ISO/IEC 9899:1999 standard.

> IEEE Std 1003.1-2001/Cor 2-2004, item XSH/TC2/D6/142 is applied, updating the DESCRIPTION to allow implementations of the tempnam() function to call tmpnam().

#### Issue 7

> Austin Group Interpretation 1003.1-2001 #148 is applied, clarifying that the tmpnam() function need not be thread-safe if called with a NULL parameter.

> The tmpnam() function is marked obsolescent.

> POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0669 [291] and XSH/TC1-2008/0670 [291,429] 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 ]