Как мне найти каталог 'temp' в Linux? - PullRequest
36 голосов
/ 27 августа 2008

Как мне найти каталог 'temp' в Linux? Я пишу платформо-нейтральную функцию C ++, которая возвращает временный каталог. В Mac и Windows есть API, который возвращает эти результаты. В линуксе я в тупике.

Ответы [ 5 ]

29 голосов
/ 28 августа 2008

Проверьте следующие переменные:

  • Переменная среды TMPDIR
  • Значение макроса P_tmpdir

Если все не удается, попробуйте использовать каталог /tmp.

Вы также можете использовать функцию tempnam для генерации уникального временного имени файла.

20 голосов
/ 28 августа 2008

Редактировать: справедливая точка от комментатора. tmpnam не лучший выбор в наши дни; используйте вместо этого mktemp / mkstemp.

Исторический ответ: будьте совместимы с POSIX и используйте tmpnam (который даст вам полное имя файла во временном местоположении).

11 голосов
/ 27 августа 2008

Используйте значение переменной среды $ TMPDIR, а если оно не существует, используйте /tmp.

9 голосов
/ 29 августа 2013

Принятая последовательность, особенно с точки зрения GNU, равна:

  1. Проверять переменную среды TMPDIR ( getenv ("TMPDIR") ) только если программа не работает как SUID / SGID ( issetugid () == 0 )
  2. В противном случае используйте P_tmpdir , если оно определено и действительно
  3. и, наконец, в случае неудачи используйте _PATH_TMP , доступный по адресу paths.h

Если вы добавляете расширение или модуль, проверьте, предоставляет ли ядро ​​функцию для этой цели. Например, PHP экспортирует php_get_teilitary_directory () из main / php_open_teilitary_file.h.

1 голос
/ 27 августа 2008

В стандартном c вы можете попробовать: P_tmpdir

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...