在大多数类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;
}
Run Code Online (Sandbox Code Playgroud)
哪个输出,在我的CygWin环境中(我有两个TEMP并TMP设置为此值):
Temporary directory = /cygdrive/c/Users/Pax/AppData/Local/Temp
Run Code Online (Sandbox Code Playgroud)
这几乎就是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";
}
Run Code Online (Sandbox Code Playgroud)
甚至可以取出一些或所有"标准"的.但是如果用户没有配置任何东西,你几乎总是会依赖/tmp它.
羊群,
感谢您抽出时间,但我期待的是来自 gnome 链接。
http://library.gnome.org/devel/glib/unstable/glib-Miscellaneous-Utility-Functions.html
使用 API g_get_tmp_dir() 我们可以获得临时目录的位置