2009-12-27 39 views
0

Un programme que j'utilise échoue lorsqu'il utilise tmpfile() pour les fichiers volumineux. Le problème semble être que je n'ai pas l'autorisation de créer de gros fichiers dans/tmp, que cette fonction utilise par défaut. Donc, y a-t-il un moyen, peut-être avec une variable d'environnement, de faire en sorte que tmpfile() écrive à un emplacement différent?Définir le répertoire de tmpfile() sous Linux

Edit: le programme en question est sox, qui utilise C.

+0

Quelle langue? –

+0

Il est peu probable que vous "n'ayez pas la permission de créer de gros fichiers dans'/tmp' ". Il est plus probable que vous ayez rempli votre partition '/ tmp'. Pourquoi ne pas simplement augmenter la taille de votre partition '/ tmp'? – Asaph

+0

Ceci est sur un serveur partagé où je ne contrôle pas les paramètres/tmp – hoju

Répondre

4

Vous pouvez utiliser l'environnement TMPDIR variable pour dire tmpfile() où créer des fichiers:

syntaxe sh:

TMPDIR=/path/to/whatever; export TMPDIR 

syntaxe csh:

setenv TMPDIR /path/to/whatever 
1

Étant donné les informations en man tmpfile (3) vous pouvez vouloir: #define P_tmpdir "/somedir" Bien sûr, ce n'est probablement pas trop fiable.

Vous pouvez également définir votre variable d'environnement, TMPDIR à un emplacement.

+1

Comment les macros du préprocesseur * my * vont-elles changer ce que la bibliothèque C fait, exactement? – SamB