REMOVE(3)

NOME
remove - exclui um nome e possivelmente o arquivo a que ele se refere

SINÓPSE
#include <stdio.h>

int remove(const char *pathname);

DESCRIÇÃO
remove exclui um nome do sistema de arquivos. Ela chama unlink para arquivos e rmdir para diretórios. Se o nome removido era a última ligação para um arquivo e nenhum processo tem o arquivo aberto, o arquivo é excluído e o espaço que ele utilizava é disponibilizado para reuso. Se o nome era a última ligação para um arquivo mas algum processo ainda possui o arquivo aberto, o arquivo permanecerá existente até que o último descritor de arquivo referenciando-o seja fechado. Se o nome referenciava uma ligação simbólica, a ligação é removida. Se o nome referenciava um 'socket', FIFO ou dispositivo, o nome para ele é removido mas processos que tenham o objeto aberto podem continar a usá-lo.

VALORES RETORNADOS
Em caso de sucesso, devolve 0. Caso contrário, -1 é devolvido e errno é selecionado adequadamente.

ERROS

EFAULT
    pathname aponta para fora de seu espaço de endereçamento acessível.

EACCES
    Acesso para escrita ao diretório contendo pathname não é permitido para o uid efetivo do processo, ou um dos diretórios em pathname não permitia permissão de pesquisa (execução).

EPERM
    O diretório contendo pathname tem o bit 'sticky' (S_ISVTX) definido e o uid efetivo do processo não é nem o uid do arquivo a ser excluído nem aquele do diretório que o contém.

ENAMETOOLONG
    pathname era muito longo.

ENOENT
    Um componente de diretório em pathname não existe ou é uma ligação simbólica qebrada (sem alvo existente).

ENOTDIR
    Um componente utilizado como um diretório em pathname não é, de fato, um diretório.

ENOMEM
    Não havia memória de kernel suficiente disponível.

EROFS
    pathname se refere a um arquivo em um sistema de arquivos somente leitura.

DE ACORDO COM
ANSI C, SVID, AT&T, POSIX, X/OPEN, BSD 4.3.

PROBLEMAS
Infelicidades no protocolo base do NFS podem causar o desaparecimento inesperado de arquivos que ainda estiverem sendo usados.

NOTA
Sob libc4 e libc5, remove era um apelido para unlink (e, portanto, não removeria diretórios).

VEJA TAMBÉM
unlink(2), rename(2), open(2), rmdir(2), mknod(2), mkfifo(3), link(2), rm(1), unlink(8).

TRADUZIDO POR LDP-BR em 22/06/2001.

  Tradução:
Marcelo M. de Abreu <mmabreu@terra.com.br>

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