2011-01-25 11 views

Respuesta

5

En la mayoría de los sistemas tipo Unix, usted estaría buscando /tmp. Si esa no es exactamente la respuesta que buscabas, debes especificar de la cual bit de Ubuntu estás hablando.

Algunas aplicaciones le permiten especificar dónde se ponen sus archivos temporales (por ejemplo, con las variables de entorno TMP, TEMP o TMPDIR), pero muchas cosas se romperían bajo UNIX si /tmp no existía, así que es seguro solo para usar eso. Si quieres que sea configurable, en su código, que tendría que utilizar algo así como la función getTmpDir() en el siguiente programa completo:

#include <stdio.h> 
#include <stdlib.h> 

const char *getTmpDir (void) { 
    char *tmpdir; 

    if ((tmpdir = getenv ("TEMP")) != NULL) return tmpdir; 
    if ((tmpdir = getenv ("TMP")) != NULL) return tmpdir; 
    if ((tmpdir = getenv ("TMPDIR")) != NULL) return tmpdir; 

    return "/tmp"; 
} 

int main(void) { 
    const char *xyzzy = getTmpDir(); 
    printf ("Temporary directory = %s\n", xyzzy); 
    return 0; 
} 

que emite, en mi entorno CygWin (tengo tanto TEMP y TMP conjunto de este valor):

Temporary directory = /cygdrive/c/Users/Pax/AppData/Local/Temp 

Eso es más o menos lo que hace el GLib g_get_tmp_dir() llamada, aunque posiblemente en un orden diferente.

Por supuesto, si desea utilizar una variable de entorno específico de la aplicación, se puede poner esto delante de los demás así:

const char *getTmpDir (void) { 
    char *tmpdir; 

    if ((tmpdir = getenv ("XYZZY_TMP")) != NULL) return tmpdir; 
    if ((tmpdir = getenv ("TEMP")) != NULL)  return tmpdir; 
    if ((tmpdir = getenv ("TMP")) != NULL)   return tmpdir; 
    if ((tmpdir = getenv ("TMPDIR")) != NULL)  return tmpdir; 

    return "/tmp"; 
} 

O incluso sacar algunas o todas las "estándar". Pero debería casi siempre recurrir a /tmp si el usuario no ha configurado nada.

+0

ya que eso es lo que estoy esperando. Quiero obtener ese camino programáticamente utilizando gtk o glib que sea posible. – boom

+2

Err, no tiene que obtenerlo programáticamente. Es '/ tmp'. Es (a pesar de los administradores sádicos) _always_ '/ tmp'. Si está codificando en C: 'char * tmpdir ="/tmp ";' lo hará bien :-) Puede afectar ciertas aplicaciones (como la variable 'TMPDIR' en' bash') pero muchas cosas romper si '/ tmp' no existe. – paxdiablo

0

Hay una TMPDIR variable de entorno que se puede establecer la ubicación del directorio temporal, la mayoría de los programas de respetar esto, si no se establece por defecto lo/tmp (o/var/tmp)

3

Miré how Python does this , y no parece haber ninguna interfaz específica de UNIX para hacerlo.

Ellos sólo tratan, en secuencia:

  1. Las variables de entorno TMPDIR, TEMP y TMP
  2. /tmp
  3. /var/tmp
  4. /usr/tmp

Teniendo en cuenta que era Python escrito por personas mucho más inteligentes que yo, estaría dispuesto a apostar que esto es probablemente lo mejor que puedes hacer.

0

Desde la línea de comandos:

$ tempfile | xargs dirname 
/tmp 
$ TMPDIR="/mnt/tmp" tempfile | xargs dirname 
/mnt/tmp 
Cuestiones relacionadas