MKTEMP(3)

NOME
mktemp - cria um nome de arquivo temporário único

SINÓPSE
#include <stdlib.h>

char *mktemp(char *template);

DESCRIÇÃO
A funcão mktemp() gera um nome de arquivo temporário único à partir de fItemplate. Os últimos seis caracterres de template tem que ser XXXXXX e estes serão trocados com a seqüencia que cria os nomes arquivos únicos. Já que será modificado, template não pode ser uma seqüencia constante, mas deve ser declarada como uma matriz de caracteres.

VALORES RETORNADOS
A função mktemp() retorna NULL quando o erro (template não termina em XXXXXX) e template nos outros casos. Se a chamada for bem sucedida, os últimos seis bytes de template deverão ser modificados, de modo tal que o nome resultantes seja único (ainda não existe). Se a chamada não foi bem sucedida, template torna-se uma seqüencia vazia.

ERROS

EINVAL
    Os últimos seis caracteres de template não eram XXXXXX.

DE ACORDO COM
BSD 4.3. e POSIX tmpnam(3).

NOTA
O tipo primivito está em <unistd.h> para libc4, libc5, glibc1; glibc2 segue o SUS e tem o tipo primitivo em <stdlib.h>.

PROBLEMAS
Nunca utilize mktemp(). Algumas implementações seguem BSD 4.3 e substituem XXXXXX pela id atual do processo e uma única letra, de modo que, no máximo, 26 nomes diferentes possam ser retornado. Se por um lado os nomes são faceis de adivinhar, e por outro lado há uma corrida entre testar o nome existente e abrir o arquivo, cada uso de mktemp() é um risco de segurança. Esta corrida é evitada por mkstemp(3).

VEJA TAMBÉM
mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3).

TRADUZIDO POR LPD-BR em 18/06/2001.

  Tradução:
Ricardo C.O.Freitas <english.quest@best-service.com>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>