Temporary file


Temporary files, or foo files, are files created to temporarily contain information while a new file is being made. It may be created by computer programs for a variety of purposes; principally when a program cannot allocate enough memory for its tasks, when the program is working on data bigger than the architecture's address space, or as a primitive form of inter-process communication.

Auxiliary memory

Modern operating systems employ virtual memory, however programs that use large amounts of data may need to create temporary file.

Inter-process communication

Most operating systems offer primitives such as pipes, sockets or shared memory to pass data among programs, but often the simplest way is to write data into a temporary file and inform the receiving program of the location of the temporary file.

Creation

On POSIX systems, temporary files can be safely created with the mkstemp or library functions. Some systems provide the former POSIX program. These files are typically located in the standard temporary directory, /tmp on Unix machines or %TEMP% on Windows machines.
A temporary file created with is deleted automatically when the program exits or the file is closed. To generate a temporary file name that will survive past the lifespan of the creating program, or GetTempFileName can be used.

Issues

Some programs create temporary files and then leave them behind - they do not delete them. This can happen because the program crashed or the developer of the program simply forgot to add the code needed to delete the temporary files after the program is done with them. The temporary files left behind can accumulate over time and consume a lot of disk space.
Temporary files may be deleted manually. Operating systems may clear out the temporary directory on a reboot, and they may have "cleaner" scripts that remove files if they have not been accessed in a certain amount of time. Also, memory-based systems, such as tmpfs, inherently do not preserve files across a reboot.