установить каталог tmpfile() в Linux

Программа, которую я использую, дает сбой, когда использует tmpfile() для больших файлов. Проблема в том, что у меня нет разрешения на создание больших файлов в /tmp, которое эта функция использует по умолчанию. Итак, есть ли способ, возможно, с помощью переменной окружения, чтобы я мог заставить tmpfile() писать в другое место?

Изменить: речь идет о программе sox, которая использует C.


person hoju    schedule 27.12.2009    source источник
comment
Маловероятно, что у вас нет разрешения на создание больших файлов в /tmp. Скорее всего, вы заполнили раздел /tmp. Почему бы просто не увеличить размер раздела /tmp?   -  person Asaph    schedule 27.12.2009
comment
Это на общем сервере, где я не могу контролировать настройки /tmp   -  person hoju    schedule 28.12.2009


Ответы (2)


Вы можете использовать переменную окружения TMPDIR, чтобы сообщить tmpfile(), где создавать файлы:

синтаксис ш:

TMPDIR=/path/to/whatever; export TMPDIR

синтаксис КШ:

setenv TMPDIR /path/to/whatever
person R Samuel Klatchko    schedule 27.12.2009
comment
Это просто неправильно. tmpfile(3) не учитывает переменную среды TMPDIR, см. также: stackoverflow.com/a/38285068/ 7015849 - person spawn; 11.12.2020

Учитывая информацию в man tmpfile (3), вы можете: #define P_tmpdir "/somedir" Конечно, это, вероятно, не т слишком надежен.

Вы также можете установить переменную окружения TMPDIR в какое-то место.

person Nick Presta    schedule 27.12.2009
comment
Как именно макросы препроцессора my изменят то, что делает библиотека C? - person SamB; 14.10.2011