Как найти каталог temp в Linux?

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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