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





В стандартном c вы можете попробовать: P_tmpdir
Используйте значение переменной среды $ TMPDIR, а если ее нет, используйте /tmp.
Обновлено: Справедливая точка от комментатора. tmpnam - не лучший выбор в наши дни; используйте вместо него mktemp / mkstemp.
Исторический ответ: будьте совместимы с POSIX и используйте tmpnam (который даст вам полное имя файла во временном месте).
Я получаю такое же предупреждение на mktemp linux страница руководства. И у меня нет команд mkstemp или tmpfile (в OSX).
mkstemp не помогает понять, какой каталог использовать.
Проверьте следующие переменные:
Если все не удается, попробуйте использовать каталог /tmp.
Вы также можете использовать функцию tempnam для создания уникального временного имени файла.
есть ли стандарт (POSIX или что-то еще), определяющий этот порядок действий? Я видел это в нескольких местах, поэтому я уверен, что это правильно, но мне было интересно, было ли где-нибудь авторитетное заявление.
Принятая последовательность, особенно с точки зрения GNU, такова:
Если вы добавляете расширение или модуль, проверьте, предоставляет ли ядро функцию для этой цели. Например, PHP экспортирует php_get_ Contemporary_directory () из main / php_open_ Contemporary_file.h.
На странице руководства linux для tmpnam в разделе ОШИБКИ написано: «Никогда не используйте эту функцию. Используйте mkstemp или tmpfile».