/dev/zero

Origem: Wikipédia, a enciclopédia livre.

Em sistemas operacionais do tipo Unix, /dev/zero é um arquivo especial que fornece quantos caracteres nulos (o NULL da tabela ASCII, 0x00; e não o caractere "dígito zero", "0", 0x30) forem lidos dele. O fluxo de caracteres nulos gerado por este dispositivo pode, por exemplo, ser utilizado para sobrescrever informações ou para gerar um arquivo limpo de certo tamanho. Outro uso comum é para fornecer um fluxo de caracteres para inicialização de armazenamento de dados (data storage).[1]

Função[editar | editar código-fonte]

Operações de leitura de /dev/zero retornam a quantidade de caracteres nulos (0x00) requisitados na operação de leitura.

Diferente do /dev/null, o /dev/zero pode ser usado como uma fonte, não apenas como um "esgoto" para dados. Todas as operações de escrita para /dev/zero ocorrem sem nenhum outro efeito. Entretanto, /dev/null normalmente é mais usado para este propósito.

Quando /dev/zero é mapeado em memória, por exemplo, com mmap, para o espaço de endereçamento virtual, é equivalente a usar memória anônima, isto é, memória não conectada a qualquer arquivo.

Exemplos[editar | editar código-fonte]

O programa utilitário dd do Unix lê fluxos de octetos de uma fonte para um destino, possivelmente realizando conversões de dados no processo. Destruindo dados existentes em uma partição do sistema de arquivos (formatação de baixo nível):

dd if=/dev/zero of=/dev/''<partição de destino>''

Criando um arquivo de 1 MiB, chamado foobar, preenchido com caracteres nulos:[2]

dd if=/dev/zero of=foobar count=1024 bs=1024

Observação: O valor do tamanho de bloco pode ser fornecido em valores SI (decimal), por exemplo, em GB, MB etc. Para criar um arquivo de 1 GB, poderia-se simplesmente digitar:

dd if=/dev/zero of=foobar count=1 bs=1GB

Observação: Em vez de criar um arquivo real com apenas bytes zero, muitos sistemas de arquivo também suportam a criação de arquivos esparsos que retornam zeros após a leitura, mas usam menos espaço real.

O sistema BSD implementa memória compartilhada através da função mmap, que mapeia o /dev/zero para a RAM.

# Sobrescreve todos os blocos da unidade por caracteres nulos; Não tente isto em casa!
dd if=/dev/zero of=/dev/hda7
# Cria um grande arquivo vazio chamado de 'teste'
dd if=/dev/zero of=teste count=1000 bs=1000

Em contraste com o /dev/null, que age como um "ralo" para os dados, o /dev/zero age como um provedor de dados. Uma operação de escrita no /dev/zero não produz efeito; uma operação de leitura no /dev/zero retorna quantos caracteres do tipo NULL forem lidos.

Ver também[editar | editar código-fonte]

Referências

  1. Love, Robert (2007). «Mapping /dev/zero». Linux System Programming: Talking Directly to the Kernel and C Library. [S.l.]: O'Reilly Media, Inc. pp. 259–260. ISBN 9780596009588 
  2. Optimizing NFS Performance: Tuning and Troubleshooting NFS on HP-UX Systems, Dave (2002). Olker. [S.l.]: Prentice Hall Professional. pp. 26–7. ISBN 9780130428165. Consultado em 16 de julho de 2014