MKSTEMP(3)

NOME
mkstemp - cria um arquivo temporário único

SINÓPSE
#include <stdlib.h>

int mkstemp(char *template);

DESCRIÇÃO
A função mkstemp() gera um nome de arquivo temporário único do template. Os últimos seis caracteres de template têm que ser XXXXXX e estes são substituidos com uma 'string' que torna o nome de arquivo único. O arquivo é então criado com modo escrita/leitura e permissão 0666 (glibc 2.0.6 e anteriores), 0600 (glibc 2.0.7 e porteriores). Já que ele será modificado, template não pode ser uma seqüencia constante, mas deveria ser declarada como uma matriz de caracteres. O arquivo é aberto com sinalizador O_EXCL, garantindo que quando mkstemp retorne bem sucedida, nos somos o único usuário.

VALORES RETORNADOS
A função mkstemp() retorna o descritor de arquivos fd do arquivo temporario ou -1 no caso de erro.

ERROS

EINVAL
    Os últimos seis caracteres de template não foram XXXXXX. Agora template não foi modificada.

EEXIST
    Não pode criar um nome de arquivo temporário único. Agora o conteúdo de template esta indefinido.

PROBLEMAS
O comportamento anterior (criando um arquivo com modo 0666) pode ser um falha de segurança, especialmente porque outros 'sabores' de Unix usam 0600, e alguém pode esquecer este detalhe quando estiver portando programas.

DE ACORDO COM
BSD 4.3.

NOTA
O protótipo está em <unistd.h> para libc4, libc5, glibc1; glibc2 segue a Especificação Unix Única e tem o protótipo em <stdlib.h>.

VEJA TAMBÉM
mktemp(3), tmpnam(3), tempnam(3), tmpfile(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>