Por que posso reproduzir arquivos de mídia enquanto eles estão baixando no Linux, mas não no Windows?

0

No Linux (com ext4) eu posso abrir um arquivo de vídeo para reprodução enquanto ele está sendo baixado através de outro programa (meu navegador, wget, um cliente de torrent com o download sequencial ativado, etc). Meu reprodutor de mídia ficará feliz em reproduzi-lo para mim sem nenhum soluço, contanto que o arquivo seja transmitido mais rápido do que eu possa reproduzi-lo. Por outro lado, o Windows praticamente não permite fazer nada com um arquivo enquanto outro programa está gravando nele. O que sobre o ext4 torna isso possível que não está presente em sistemas de arquivos como o NTFS?

    
por Jode 24.03.2017 / 21:55

1 resposta

0

Não se trata tanto de "recursos" do ext4 ou de qualquer outro sistema de arquivos do Linux que o torne possível, mas também dos padrões ao abrir arquivos usando a interface do programador de aplicativos (API) em cada plataforma.

No Windows, CreateFile sem Outras opções impedem que qualquer outro processo seja aberto ao mesmo tempo. Você precisa especificar explicitamente uma opção FILE_SHARE se quiser permitir que outros processos façam isso.

No Linux, a criação de um arquivo com fopen usando o modo w ou w+ permite todos os outros processos ler e escrever. Você tem que usar explicitamente outras chamadas do sistema como flock para evitar isso.

Essa é a razão pela qual um arquivo recém-criado (por seu navegador, wget etc.) pode ser lido por padrão no Linux, embora não seja compartilhado por padrão no Windows. Em princípio, se os programadores quisessem, eles também poderiam fazer o contrário. Mas isso exigiria esforço adicional.

    
por 26.03.2017 / 19:25