2008-08-27 28 views

Respuesta

1

En C estándar, usted podría intentar: P_tmpdir

11

Utilice el valor de la variable de entorno $ TMPDIR, y si eso no existe, utilice /tmp.

19

Editar: Punto justo del comentarista. tmpnam no es una buena opción en estos días; use mktemp/mkstemp en su lugar.

Respuesta histórica: Sea compatible con POSIX y use tmpnam (que le dará un nombre de archivo completo en una ubicación temporal).

+5

La página man de linux que tengo para tmpnam dice en su sección BUGS: "Nunca use esta función. Use mkstemp o tmpfile" – ergosys

+1

Recibo la misma advertencia en mktemp linux [man page] (http: // man7) .org/linux/man-pages/man3/mktemp.3.html). Y no tengo los comandos 'mkstemp' o' tmpfile' (en OSX). – kentcdodds

+0

mkstemp no lo ayuda a descubrir qué directorio usar. – andrewrk

26

comprobarse los siguientes variables:

Si todo falla intente utilizar el directorio /tmp.

También puede usar la función tempnam para generar un nombre de archivo temporal único.

9

La secuencia aceptado, concretamente desde el punto de vista de GNU, es decir:

  1. compruebe la variable ambiental TMPDIR (getenv ("TMPDIR")) sólo si el programa no se está ejecutando como SUID/SGID (issetugid() == 0)
  2. utilizar lo contrario P_tmpdir si está definida y es válido
  3. y, por último, debe aquellos fallar, utilice _PATH_TMP disponible de paths.h

Si va a añadir una extensión o módulo, comprobar para ver si el núcleo proporciona una función para este propósito. Por ejemplo, PHP exporta php_get_temporary_directory() desde main/php_open_temporary_file.h.

Cuestiones relacionadas