Go to main content

man pages section 3: Basic Library Functions

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

mkdtemp(3C)

Name

mktemp, mkdtemp - make a unique file name from a template

Synopsis

#include <stdlib.h>

char *mktemp(char *template);
char *mkdtemp(char *template);

Description

The mktemp() function replaces the contents of the string pointed to by template with a unique file name, and returns template. The string in template should look like a file name with six trailing 'X's. The mktemp() function will replace the 'X's with a character string that can be used to create a unique file name.

The mkdtemp() function makes the same replacement to the template as in mktemp() and creates the template directory using mkdir(2), passing a mode argument of 0700.

Return Values

The mktemp() function returns the pointer template. If a unique name cannot be created, template points to a null string.

Upon successful completion, mkdtemp() returns the pointer template. If a unique directory cannot be created, mkdtemp() returns a null pointer.

Errors

The mkdtemp() function can set errno to the same values as lstat(2) and mkdir(2).

Examples

Example 1 Generate a filename.

The following example replaces the contents of the “template” string with a 10-character filename beginning with the characters “file” and returns a pointer to the “template” string that contains the new filename.

#include <stdlib.h>
...
char template[] = "/tmp/fileXXXXXX";
char *ptr;
ptr = mktemp(template);

Usage

Between the time a pathname is created and the file opened, it is possible for some other process to create a file with the same name. The tmpfile(3C) and mkstemp(3C) functions avoid this problem and are preferred over this function.

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
MT-Level
Safe
Standard

See Also

lstat(2), mkdir(2), mkstemp(3C), tmpfile(3C), tmpnam(3C), attributes(7), standards(7)