Arquivo de mídia pode ser reproduzido depois de apagado?

2

Eu experimentei o seguinte paradoxo muitas vezes, e não entendo como isso acontece.

Eu abro um grande arquivo de música / vídeo (digamos 100 MB), e quando ele começa a tocar, eu o apago (permanentemente). Apesar disso, o media player será capaz de tocar a coisa toda.
Eu acho que não armazena todo o arquivo no começo, porque

  • o uso de memória pelo processo é de apenas 15 MB
  • e não é isso que os media players fazem de qualquer maneira.

Então, como isso acontece?

Dave
fonte

Respostas:

6

Os detalhes exatos dependem do seu sistema, mas a idéia básica é que o sistema de arquivos subjacente não vai tirar o tapete de um arquivo aberto. Ele o apaga de qualquer lugar que você possa vê-lo, mas ele não vai realmente limpar os blocos no disco (nem alguma representação das estruturas de diretório que apontam para o arquivo) até que você o feche.

Em sistemas Unix, isso é comum: a maioria dos sistemas de arquivos unix não explodirá um inode até que o último filehandle aberto seja fechado.

No Windows, parece que se o processo de abertura especifica 'FILE_SHARE_DELETE' para a chamada CreateFile (que um programa bem comportado deve fazer), então o driver do sistema de arquivos processa a exclusão, mas os arquivos abertos ainda podem acessá-lo. Depois que o último HANDLE aberto para o arquivo for fechado, o arquivo será limpo pelo driver do sistema de arquivos.

Michael Kohne
fonte
Mas eu uso o Windows ... Se eu posso excluí-lo ou não parece depender do tipo de arquivo.
Dave
2
@Dave - ver minha revisão - O Windows tem uma maneira que os programas (bem comportados) podem fazer com que isso funcione corretamente.
Michael Kohne
concordou, este é um efeito colateral do compartilhamento de recursos thread / multi-processo.
Frank Thomas