HPlogo HP-UX Reference Volume 4 of 5 > m

mktemp(3C)

» 

Technical documentation

Complete book in PDF

 » Table of Contents

 » Index

NAME

mktemp(), mkstemp() — make a unique file name

SYNOPSIS

#include <stdlib.h>

char *mktemp(char *template);

int mkstemp(char *template);

Remarks:

These functions are provided solely for backward compatibility and importability of applications, and are not recommended for new applications where portability is important. For portable applications, use tmpfile() instead (see tmpfile(3S)).

DESCRIPTION

mktemp() replaces the contents of the string pointed to by template by a unique file name, and returns the address of template. The string in template should look like a file name with six trailing Xs; mktemp() replaces the Xs with a letter and the current process ID. The letter is chosen such that the resulting name does not duplicate the name of an existing file. If there are fewer than six Xs, the letter is dropped first, followed by dropping the high-order digits of the process ID.

mkstemp() makes the same replacement to the template, but also returns a file descriptor for the template file after opening the file for reading and writing. mkstemp() thus prevents any possible race condition between testing whether the file exists and opening it for use.

APPLICATION USAGE

mktemp() and mkstemp() are thread-safe. mktemp() is async-cancel-safe. mkstemp() is not async-cancel-safe. A cancellation point may occur when a thread is executing mkstemp().

RETURN VALUE

mktemp() returns its argument except when it runs out of letters, in which case the result is a pointer to the empty string "".

mkstemp() returns an open file descriptor upon successful completion, or -1 if no suitable file could be created.

WARNINGS

It is possible to run out of letters.

mktemp() and mkstemp() do not check to determine whether the file name part of template exceeds the maximum allowable file name length.

STANDARDS CONFORMANCE

mktemp(): SVID2, SVID3, XPG2

© Hewlett-Packard Development Company, L.P.