In riferimento a questa domanda: /server/534449
In che cat /dev/urandom
modo alcuni emulatori di terminali diventano instabili?
In riferimento a questa domanda: /server/534449
In che cat /dev/urandom
modo alcuni emulatori di terminali diventano instabili?
Risposte:
Mentre ci sono i tuoi caratteri ASCII normali e stampabili che vengono inviati avanti e indietro su un terminale, ci sono anche molti caratteri non stampabili che vengono utilizzati dal sistema per comunicare con il terminale. Ad esempio, se un programma invia il carattere 0x07
("ASCII Bell character"), il terminale dovrebbe emettere un segnale acustico.
Altre sequenze speciali possono essere utilizzate per modificare il colore del testo visualizzato, la direzione in cui viene visualizzato, il titolo della finestra, la dimensione della finestra, ecc., Tra molte altre cose.
Quando tu
cat /dev/urandom
Un sacco di personaggi casuali vengono scaricati sul tuo terminale e il terminale non può dire che non sono veri e propri codici di controllo.
Poiché il programma sta effettivamente inviando comandi casuali al terminale, il terminale finisce in uno stato casuale, spesso inutilizzabile.
Alcuni dei risultati casuali saranno i codici di escape ANSI ( http://en.wikipedia.org/wiki/ANSI_escape_code ), che possono fare cose divertenti come nascondere il cursore o selezionare caratteri alternativi. Un'altra possibilità sono le sequenze Unicode: un bytestream casuale non sarà valido UTF-8, e probabilmente non tutti i terminali compatibili con Unicode lo gestiranno con grazia.
cat /dev/urandom
ti darà un flusso di byte casuali tra 0
e 255
, non tutti questi valori sono caratteri di testo validi. Poiché la finestra del terminale forniva dati non validi, non ci si sarebbe mai aspettati di gestirla, perché l'applicazione del terminale poteva essere "rotta".