Como o / dev / zero é criado e como posso fazer variantes como / dev / one?

6

Eu li a página mknod man, que é (até onde eu sei) o que você usaria para criar um dispositivo de caractere como /dev/zero , mas não vejo como você conseguiria fluxo infinito de zero bits (ou outro padrão). Qual é o procedimento para criar tais dispositivos de caracteres?

    
por Blacklight Shining 01.10.2012 / 08:57

3 respostas

3

Tudo que o mknod faz é associar um arquivo de dispositivo a um driver de dispositivo. Existem drivers de dispositivo que implementam a interação com dispositivos reais, e há drivers de dispositivos que reagem apenas a solicitações de leitura e gravação de maneiras úteis. Se você quiser, pode sentar e escrever um driver que retorne a letra da Banner com estrela da Spangeled . Mas é uma questão de codificação, não encontrar os argumentos certos para mknod .

    
por 01.10.2012 / 18:39
4

mknod cria o nó do dispositivo, mas o VFS detecta acessos ao nó do dispositivo e os redireciona para o driver apropriado dentro do kernel para manipulação. Todos os nós de dispositivos, de /dev/null a /dev/sdX a /dev/ttyXX a /dev/videoX , são manipulados dessa maneira.

    
por 01.10.2012 / 09:35
0

Se você quiser apenas recriar as habilidades /dev/zero , mas com um caractere diferente de zero / nulo, você pode usar tr para alterar todos os zeros ("\ 000" em octal) para outra coisa. / p>

Então, para cuspir um fluxo interminável de "a" s, por exemplo, você poderia fazer:

cat /dev/zero | tr "
head -c 1M /dev/zero |tr "
cat /dev/zero | tr "
head -c 1M /dev/zero |tr "%pre%0" "1"
0" "1" | head -c 20 aaaaaaaaaaaaaaaaaaaa
0" "1"
0" "1" | head -c 20 aaaaaaaaaaaaaaaaaaaa

Ou pule o gato e mostre o valor de um M (1024 * 1024) com

%pre%

"\ 141" é o caractere "a".

Veja este site link para uma rápida breve página do ASCII - códigos octal. Na verdade, é essa imagem aqui:

(Eu sei, antiga pergunta "resolvida", mas eu a encontrei enquanto procurava por um fluxo infinito de caracteres diferentes, então isso "resolve" o "como fazer / dev / one ou / dev / [caráter diferente]" problema.)

    
por 14.12.2015 / 15:14