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

我必须使用哪种gtk方法在Ubuntu中获取临时路径?,ubuntu,gtk,gnome,glib,Ubuntu,Gtk,Gnome,Glib,如何在Ubuntu中获取临时目录路径?在大多数类似Unix的系统上,您需要查找/tmp。如果这不是你想要的答案,你应该说明你在谈论Ubuntu的哪一部分 某些应用程序将允许您指定其临时文件的放置位置(例如使用TMP、TEMP或TMPDIR环境变量),但在UNIX下,如果/TMP不存在,许多内容将中断,因此使用它是安全的。如果要使其可配置,请在代码中,在以下完整程序中使用类似函数getTmpDir(): #include <stdio.h> #include <stdlib.h&

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

在大多数类似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;
}
这几乎就是这个能说会道的电话所做的,尽管顺序可能不同

当然,如果您想使用特定于应用程序的环境变量,可以将其放在其他变量之前,因此:

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

有一个环境变量TMPDIR可以设置临时目录的位置,大多数程序都尊重这一点,如果没有设置,它将默认为/tmp(或/var/tmp)

,而且似乎没有任何特定的UNIX接口来实现这一点

他们只是按顺序尝试:

  • 环境变量
    TMPDIR
    TEMP
    TMP
  • /tmp
  • /var/tmp
  • /usr/tmp
  • 鉴于Python是由比我聪明得多的人编写的,我敢打赌这可能是你能做的最好的了。

    Flocks

    谢谢你花时间,但我期待的是从gnome链接

    使用API g_get_tmp_dir()我们可以从命令行获得临时目录的位置:

    $ tempfile | xargs dirname
    /tmp
    $ TMPDIR="/mnt/tmp" tempfile | xargs dirname
    /mnt/tmp
    

    是的,这就是我所期待的。我想使用gtk或glib以编程的方式获得路径,这是可行的。这是
    /tmp
    。它(尽管是虐待狂管理员)总是
    /tmp
    。如果您是用C进行编码:
    char*tmpdir=“/tmp”
    可以很好地完成:-)您可以影响某些应用程序(如
    bash
    中的
    TMPDIR
    变量),但是如果
    /tmp
    不存在,很多事情都会中断。
    $ tempfile | xargs dirname
    /tmp
    $ TMPDIR="/mnt/tmp" tempfile | xargs dirname
    /mnt/tmp