En référence à cette question: /server/534449
Comment cat /dev/urandom
rendre certains émulateurs de terminaux délirants?
En référence à cette question: /server/534449
Comment cat /dev/urandom
rendre certains émulateurs de terminaux délirants?
Réponses:
Bien que vos caractères ASCII normaux imprimables soient envoyés dans les deux sens sur un terminal, de nombreux caractères non imprimables sont également utilisés pour que le système communique avec le terminal. Par exemple, si un programme envoie le caractère 0x07
("caractère de cloche ASCII"), votre terminal devrait émettre un bip.
D'autres séquences spéciales peuvent être utilisées pour changer la couleur du texte affiché, la direction dans laquelle il est affiché, le titre de la fenêtre, la taille de la fenêtre, etc., entre autres choses.
Quand vous
cat /dev/urandom
Un tas de caractères aléatoires sont transférés sur votre terminal, et le terminal ne peut pas dire que ce ne sont pas de vrais codes de contrôle.
Parce que le programme envoie efficacement des commandes aléatoires au terminal, le terminal se retrouve dans un état aléatoire, souvent inutilisable.
Une partie de la sortie aléatoire sera des codes d'échappement ANSI ( http://en.wikipedia.org/wiki/ANSI_escape_code ), qui peuvent faire des choses amusantes comme cacher le curseur ou sélectionner des polices alternatives. Une autre possibilité est les séquences unicode: un flux de bytest aléatoire ne sera pas UTF-8 valide, et probablement tous les terminaux compatibles Unicode ne le gèrent pas avec élégance.
cat /dev/urandom
vous donnera un flux d'octets aléatoires entre 0
et 255
, toutes ces valeurs ne sont pas des caractères de texte valides. Étant donné que la fenêtre du terminal alimentait des données non valides, on ne s'attendait pas à ce qu'elles gèrent l'application du terminal dans un état "interrompu".