How can I get the temporary directory path in Ubuntu?
On most Unix-like systems, you'd be looking for /tmp
. If that's not quite the answer you were after, you should specify which bit of Ubuntu you're talking about.
Certain applications will allow you to specify where their temporary files are put (such as with the TMP
, TEMP
or TMPDIR
environment variables) but a lot of stuff would break under UNIX if /tmp
didn't exist, so it's safe just to use that. If you want to make it configurable, in your code, you'd use something like the function getTmpDir()
in the following complete program:
#include <stdio.h>
#include <stdlib.h>
const char *getTmpDir (void) {
char *tmpdir;
if ((tmpdir = getenv ("TEMP")) != NULL) return tmpdir;
if ((tmpdir = getenv ("TMP")) != NULL) return tmpdir;
if ((tmpdir = getenv ("TMPDIR")) != NULL) return tmpdir;
return "/tmp";
}
int main(void) {
const char *xyzzy = getTmpDir();
printf ("Temporary directory = %s\n", xyzzy);
return 0;
}
which outputs, in my CygWin environment (I have both TEMP
and TMP
set to this value):
Temporary directory = /cygdrive/c/Users/Pax/AppData/Local/Temp
That's pretty much what the GLib g_get_tmp_dir()
call does, though possibly in a different order.
Of course, if you wanted to use an application-specific environment variable, you could put that before the others thus:
const char *getTmpDir (void) {
char *tmpdir;
if ((tmpdir = getenv ("XYZZY_TMP")) != NULL) return tmpdir;
if ((tmpdir = getenv ("TEMP")) != NULL) return tmpdir;
if ((tmpdir = getenv ("TMP")) != NULL) return tmpdir;
if ((tmpdir = getenv ("TMPDIR")) != NULL) return tmpdir;
return "/tmp";
}
Or even take out some or all of the "standard" ones. But you should pretty much always fall back on /tmp
if the user hasn't configured anything.