我必须使用哪种gtk方法在Ubuntu中获取临时路径?

时间:2011-01-25 05:59:16

标签: ubuntu gtk gnome glib

如何在Ubuntu中获取临时目录路径?

5 个答案:

答案 0 :(得分:5)

在大多数类Unix系统上,你一直在寻找/tmp。如果那不是您所追求的答案,那么您应该指定您正在谈论的Ubuntu的位。

某些应用程序将允许您指定其临时文件的放置位置(例如使用TMPTEMPTMPDIR环境变量)但在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环境中输出(我将TEMPTMP设置为此值):

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接口。

他们只是按顺序尝试:

  1. 环境变量TMPDIRTEMPTMP
  2. /tmp
  3. /var/tmp
  4. /usr/tmp
  5. 鉴于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