我该如何在Ubuntu中获取临时目录路径?
/tmp
。如果这不是您想要的答案,您应该指定您所说的Ubuntu的哪个部分。TMP
,TEMP
或TMPDIR
环境变量),但是如果/tmp
不存在,很多东西都会在UNIX下中断,所以只使用/tmp
是安全的。如果您想使其可配置,在您的代码中,您可以使用以下完整程序中的getTmpDir()
函数:#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;
}
以下是在我的CygWin环境中输出的结果(我将TEMP
和TMP
都设置为此值):
Temporary directory = /cygdrive/c/Users/Pax/AppData/Local/Temp
这基本上就是GLib g_get_tmp_dir()
函数所做的事情,只是可能顺序不同。
当然,如果您想使用特定于应用程序的环境变量,您可以将其放在其他变量之前,如下所示:
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";
}
甚至可以去掉一些或全部的“标准”路径。但是,如果用户没有配置任何路径,则您应该基本上始终回退到/tmp
。
群集,
谢谢您抽出时间来看待此事,但我期望的是从gnome链接中获取信息。
http://library.gnome.org/devel/glib/unstable/glib-Miscellaneous-Utility-Functions.html
使用API g_get_tmp_dir() 可以获得临时目录的位置。
有一个环境变量TMPDIR,可以设置临时目录的位置,大多数程序都会尊重它,如果没有设置,它将默认为/tmp(或/var/tmp)
从命令行:
$ tempfile | xargs dirname
/tmp
$ TMPDIR="/mnt/tmp" tempfile | xargs dirname
/mnt/tmp
/tmp
。除了那些虐待狂的管理员之外,它总是/tmp
。如果你在使用 C 语言编写代码:char *tmpdir = "/tmp";
就可以了 :-) 你可以影响某些应用程序(例如bash
中的TMPDIR
变量),但如果/tmp
不存在,很多东西都会出问题。 - paxdiablo