En referencia a esta pregunta: /server/534449
¿Cómo hace cat /dev/urandom
que algunos emuladores de terminales se vuelvan inestables?
En referencia a esta pregunta: /server/534449
¿Cómo hace cat /dev/urandom
que algunos emuladores de terminales se vuelvan inestables?
Respuestas:
Si bien existen sus caracteres ASCII normales e imprimibles que se envían de ida y vuelta en un terminal, también hay muchos caracteres no imprimibles que se utilizan para que el sistema se comunique con el terminal. Por ejemplo, si un programa envía el carácter 0x07
("carácter de campana ASCII"), su terminal debe emitir un pitido.
Se pueden usar otras secuencias especiales para cambiar el color del texto que se muestra, en qué dirección se muestra, el título de la ventana, el tamaño de la ventana, etc., entre muchas otras cosas.
Cuando usted
cat /dev/urandom
Se arrojan un montón de caracteres aleatorios a su terminal, y la terminal no puede decir que no son códigos de control reales.
Debido a que el programa está enviando efectivamente comandos aleatorios al terminal, el terminal termina en un estado aleatorio, a menudo inutilizable.
Algunos de los resultados aleatorios serán códigos de escape ANSI ( http://en.wikipedia.org/wiki/ANSI_escape_code ), que pueden hacer cosas divertidas como ocultar el cursor o seleccionar fuentes alternativas. Otra posibilidad son las secuencias unicode: un bytestream aleatorio no será UTF-8 válido, y probablemente no todos los terminales con reconocimiento Unicode lo manejan con gracia.
cat /dev/urandom
le dará una secuencia de bytes aleatorios entre 0
y 255
, no todos esos valores son caracteres de texto válidos. Debido a que la ventana del terminal se alimentaba con datos no válidos, nunca se esperaba que pudiera manejarla, podría poner la aplicación del terminal en un estado "roto".