Quando você exclui o diretório, você precisa excluir seu conteúdo recursivamente. Por que isso acontece?
Simplificando, podemos dizer que «diretório» é o arquivo, que contém uma lista de pares. O que acontecerá se você apenas "liberar blocos de diretório em uma unidade"?
Vamos considerar a exclusão de arquivos regulares. Programa (como rm
) chama unlink()
chamada do sistema. O sistema de operação (e, mais especificamente, o driver do sistema de arquivos) verifica a contagem de links físicos ( filename
no diretório no parágrafo anterior). Se for zero e o arquivo não estiver aberto, ele poderá ser fisicamente excluído. Assim, sabemos como excluir o arquivo.
Agora vamos olhar para a exclusão do diretório novamente. Quando você apenas libera blocos, você não possui unlink
arquivos, você não decrementa o contador de links para qualquer arquivo no diretório. E para qualquer arquivo em subdiretórios, subdiretórios, etc. O que é conclusão? Exatamente, precisamos fazer unlink
para todos os arquivos no diretório que removemos, porque não queremos obter lixo não removível no Sistema de arquivos.
Assim, você pode usar a solução do @ SYN (rodando rm
no background), mas não há como remover o diretório em tempo constante.