tmpfile(), tmpfile64()

Create a temporary file

Synopsis:

#include <stdio.h>

FILE* tmpfile( void );

FILE* tmpfile64( void );

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The tmpfile() and tmpfile64() functions create a temporary file and open a corresponding FILE stream. The tmpfile64() function is a 64-bit version of tmpfile(). The file is automatically removed when it's closed or when the program terminates. The file is opened in update mode (as in fopen()'s w+ mode).

If the process is killed between file creation and unlinking, a permanent file may be left behind.


Note: When a stream is opened in update mode, both reading and writing may be performed. However, writing may not be followed by reading without an intervening call to fflush(), or to a file-positioning function (fseek(), fsetpos(), rewind()). Similarly, reading may not be followed by writing without an intervening call to a file-positioning function, unless the read resulted in end-of-file.

Returns:

A pointer to the stream of the temporary file, or NULL if an error occurs (errno is set).

Errors:

EACCES
The calling process doesn't have permission to create the temporary file.
EMFILE
The calling process already has already used OPEN_MAX file descriptors.
ENFILE
The system already has the maximum number of files open.
EROFS
The filesystem for the temporary file is read-only.

Examples:

#include <stdio.h>
#include <stdlib.h>

static FILE *TempFile;

int main( void )
{
    TempFile = tmpfile();
…
    fclose( TempFile );
    
    /* The temporary file will be removed when we exit. */
    return EXIT_SUCCESS;
}

Classification:

tmpfile() is ANSI, POSIX 1003.1; tmpfile64() is Large-file support

Safety:
Cancellation point Yes
Interrupt handler No
Signal handler No
Thread Yes

See also:

fopen(), fopen64(), freopen(), freopen64(), tempnam(), tmpnam()