Charles K
Charles K

Reputation: 391

How do I find the 'temp' directory in Linux?

How do I find the 'temp' directory in Linux? I am writing a platform neutral C++ function that returns the temp directory. In Mac and Windows, there is an API that returns these results. In Linux, I'm stumped. ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Upvotes: 39

Views: 80897

Answers (6)

Franck
Franck

Reputation: 71

Yes you could find it using the environment variable TMPDIR.
However it is not always defined.

The question is not about creating a temporary folder but find the existing one.

dirname "$(mktemp --dry-run)"

This should give you the top most temporary folder.

Upvotes: 0

Borgboy
Borgboy

Reputation: 670

The accepted sequence, specifically from a GNU standpoint, is:

  1. Check the environmental variable TMPDIR (getenv("TMPDIR")) only if the program is not running as SUID/SGID (issetugid() == 0)
  2. Otherwise use P_tmpdir if it is defined and is valid
  3. and finally, should those fail, use _PATH_TMP available from paths.h

If you are adding an extension or module, check to see if the core provides a function for this purpose. For example, PHP exports php_get_temporary_directory() from main/php_open_temporary_file.h.

Upvotes: 11

Greg Dan
Greg Dan

Reputation: 6298

Check following variables:

If all fails try to use the directory /tmp.

You can also use tempnam function to generate a unique temporary file name.

Upvotes: 32

Adam Wright
Adam Wright

Reputation: 49376

Edit: Fair point from the commenter. tmpnam isn't a good choice these days; use mktemp/mkstemp instead.

Historical answer: Be POSIX compliant, and use tmpnam (which will give you a full filename in a temporary location).

Upvotes: 20

Greg Hewgill
Greg Hewgill

Reputation: 993105

Use the value of the $TMPDIR environment variable, and if that doesn't exist, use /tmp.

Upvotes: 12

jm.
jm.

Reputation: 23714

In standard c, you could try: P_tmpdir

Upvotes: 1

Related Questions