如何在Ubuntu中获取临时目录路径?
答案 0 :(得分:5)
在大多数类Unix系统上,你一直在寻找/tmp
。如果那不是您所追求的答案,那么您应该指定您正在谈论的Ubuntu的位。
某些应用程序将允许您指定其临时文件的放置位置(例如使用TMP
,TEMP
或TMPDIR
环境变量)但在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
。
答案 1 :(得分:3)
我查看了how Python does this,似乎没有任何特定的UNIX接口。
他们只是按顺序尝试:
TMPDIR
,TEMP
和TMP
/tmp
/var/tmp
/usr/tmp
鉴于Python是由比我更聪明的人编写的,我愿意打赌这可能是你能做的最好的。
答案 2 :(得分:3)
鸡群,
感谢您抽出宝贵时间,但我期待的是来自gnome链接。
http://library.gnome.org/devel/glib/unstable/glib-Miscellaneous-Utility-Functions.html
使用API g_get_tmp_dir()我们可以获得临时目录的位置
答案 3 :(得分:0)
有一个环境变量TMPDIR可以设置临时目录的位置,大多数程序都尊重这个,如果没有设置它将默认为/ tmp(或/ var / tmp)
答案 4 :(得分:0)
从命令行:
$ tempfile | xargs dirname
/tmp
$ TMPDIR="/mnt/tmp" tempfile | xargs dirname
/mnt/tmp