#cpp #linux
В какой переменной окружения Linux хранит путь к папке temp\tmp? Мне нужно программно найти путь к этой папке. Программа на C++.
Ответы
Ответ 1
согласно стандарту posix каталогом для хранения временных файлов является каталог /tmp. но, т.к. вы спрашиваете конкретно про операционную систему gnu/linux, то здесь применим стандарт fhs, согласно которому местом для сохранения временных файлов является не только каталог /tmp, но и каталог /var/tmp. разница между ними в том, что первый обычно (но не обязательно) очищается при загрузке операционной системы. а т.к. вы уточняете ещё и про c++, то вышеописанной информацией можно пренебречь ввиду наличия определённой стандартом posix функции tmpfile() и её c++-аналога std::tmpfile(). наличие же каких-либо переменных окружения, связанных с каталогом для хранения временных файлов, насколько мне известно, ни одним из упомянутых стандартов не требуется.Ответ 2
Если она определена, то TMPDIR. Иначе используют каталог по умолчанию /tmpОтвет 3
Для начала имеет смысл проверять переменную окружения TMPDIR. Если та существует и является путём - то использовать её. В win32 api посмотрите на метод GetTempPathW. (упомянуто для полноты картины) Если не существует, то стандартный заголовок stdio.h может объявить P_tmpdir. Если ничего не помогло, то можно воспользоваться стандартным /tmp, но только как последнее средство. PS: ответ основан на реализации функции sys_get_temp_dir в php.Ответ 4
Нашёл функцию, которая позволяет взять путь к папке c временными файлами как в Windows, так и в Linux. std::experimental::filesystem::temp_directory_path();
Комментариев нет:
Отправить комментарий