Какой метод GTK я должен использовать, чтобы получить временный путь в Ubuntu? - PullRequest
6 голосов
/ 25 января 2011

Как я могу получить путь к временному каталогу в Ubuntu?

Ответы [ 5 ]

5 голосов
/ 25 января 2011

В большинстве Unix-подобных систем вы бы искали /tmp. Если это не совсем тот ответ, который вы получили, вы должны указать , какой бит Ubuntu, о котором вы говорите.

Некоторые приложения позволят вам указать, куда помещаются их временные файлы (например, с переменными окружения TMP, TEMP или TMPDIR), но многие вещи могут сломаться в UNIX, если /tmp didn ' не существует, так что безопасно просто использовать это. Если вы хотите сделать его настраиваемым, в своем коде вы должны использовать что-то вроде функции 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, если пользователь ничего не настроил.

3 голосов
/ 25 января 2011

Flocks,

Спасибо, что нашли время, но я ожидаю от ссылки гнома.

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

с помощью API g_get_tmp_dir () мы можемиметь местоположение временного каталога

3 голосов
/ 25 января 2011

Я посмотрел на , как Python делает это , и, похоже, нет никакого конкретного интерфейса UNIX для этого.

Они просто пытаются, по порядку:

  1. Переменные среды TMPDIR, TEMP и TMP
  2. /tmp
  3. /var/tmp
  4. /usr/tmp

Учитывая, что Python был написан людьми намного умнее меня, я бы поспорил, что это, вероятно, лучшее, что вы можете сделать.

0 голосов
/ 18 августа 2012

Из командной строки:

$ tempfile | xargs dirname
/tmp
$ TMPDIR="/mnt/tmp" tempfile | xargs dirname
/mnt/tmp
0 голосов
/ 25 января 2011

Существует переменная окружения TMPDIR, которая может установить местоположение временного каталога, большинство программ учитывают это, если оно не установлено, по умолчанию будет / tmp (или / var / tmp)

...