W odniesieniu do tego pytania: /server/534449
W jaki sposób cat /dev/urandom
niektóre emulatory terminali stają się niepewne?
W odniesieniu do tego pytania: /server/534449
W jaki sposób cat /dev/urandom
niektóre emulatory terminali stają się niepewne?
Odpowiedzi:
Chociaż istnieją normalne, drukowalne znaki ASCII, które są przesyłane tam i z powrotem na terminalu, istnieje również wiele znaków niedrukowalnych, które są używane przez system do komunikacji z terminalem. Na przykład, jeśli program wysyła znak 0x07
(„znak dzwonka ASCII”), terminal powinien wydać dźwięk.
Inne specjalne sekwencje mogą być użyte do zmiany koloru wyświetlanego tekstu, kierunku wyświetlania, tytułu okna, wielkości okna itp.
Kiedy ty
cat /dev/urandom
Kilka losowych znaków jest zrzucanych na twój terminal, a terminal nie może powiedzieć, że to nie są prawdziwe kody kontrolne.
Ponieważ program skutecznie wysyła losowe polecenia do terminala, terminal kończy się w losowym, często bezużytecznym stanie.
Niektóre losowe dane wyjściowe to kody ucieczki ANSI ( http://en.wikipedia.org/wiki/ANSI_escape_code ), które mogą robić fajne rzeczy, takie jak ukrywanie kursora lub wybieranie alternatywnych czcionek. Inną możliwością są sekwencje Unicode: losowy bajt nie będzie prawidłowy UTF-8 i prawdopodobnie nie wszystkie terminale obsługujące Unicode obsługują to z wdziękiem.
cat /dev/urandom
da ci strumień losowych bajtów pomiędzy 0
i 255
, nie wszystkie z tych wartości są poprawnymi znakami tekstowymi. Ponieważ okno terminala podaje niepoprawne dane, nigdy nie oczekiwano, że może to spowodować, że aplikacja terminala przejdzie w stan „zepsuty”.