2009-12-27 4 views
0

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

Edit: данная программа является sox, который использует C.

+0

Какой язык? –

+0

Маловероятно, что у вас нет разрешения на создание больших файлов в '/ tmp'. Скорее всего, вы заполнили свой раздел '/ tmp'. Почему бы просто не увеличить размер вашего раздела '/ tmp'? – Asaph

+0

Это на общем сервере, на котором у меня нет параметров управления/tmp. – hoju

ответ

4

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

синтаксис ш:

TMPDIR=/path/to/whatever; export TMPDIR 

CSH синтаксис:

setenv TMPDIR /path/to/whatever 
1

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

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

+1

Как мои макросы * моего препроцессора будут менять то, что делает библиотека C, точно? – SamB