pax*_*blo 5

在大多数类Unix系统上,你一直在寻找/tmp.如果这不是挺你之后的答案,你应该指定哪个你在谈论的Ubuntu位.

某些应用程序将允许你指定他们的临时文件放在(如与TMP,TEMPTMPDIR环境变量),但很多东西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环境中(我有两个TEMPTMP设置为此值):

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它.

  • 呃,你不必以编程方式得到它.这是`/ tmp`.它是(虐待狂的管理员)_always_`/tmp`.如果你用C编写:`char*tmpdir ="/ tmp";`会很好地执行:-)你可以影响某些应用程序(比如`bash`中的`TMPDIR`变量)但是很多东西会如果`/ tmp`不存在则中断. (2认同)

boo*_*oom 3

羊群,

感谢您抽出时间,但我期待的是来自 gnome 链接。

http://library.gnome.org/devel/glib/unstable/glib-Miscellaneous-Utility-Functions.html

使用 API g_get_tmp_dir() 我们可以获得临时目录的位置