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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
37
0
70 797
5

Ответы 5

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

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

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

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

На странице руководства linux для tmpnam в разделе ОШИБКИ написано: «Никогда не используйте эту функцию. Используйте mkstemp или tmpfile».

ergosys 10.03.2012 08:22

Я получаю такое же предупреждение на mktemp linux страница руководства. И у меня нет команд mkstemp или tmpfile (в OSX).

kentcdodds 01.09.2015 19:45

mkstemp не помогает понять, какой каталог использовать.

andrewrk 18.02.2016 01:20

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

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

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

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

есть ли стандарт (POSIX или что-то еще), определяющий этот порядок действий? Я видел это в нескольких местах, поэтому я уверен, что это правильно, но мне было интересно, было ли где-нибудь авторитетное заявление.

Peter Hull 23.09.2018 22:05

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

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

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

Другие вопросы по теме