I have a script which prints out some data to the terminal, which I keep in a screen session. Often times I see indecipherable characters printed out and the output freezes - I'm guessing some control code is being triggered from the printout. Is there a way to prevent this?
On 02/24/2009 07:53 PM, Konstantin Svist wrote:
I have a script which prints out some data to the terminal, which I keep in a screen session. Often times I see indecipherable characters printed out and the output freezes - I'm guessing some control code is being triggered from the printout. Is there a way to prevent this?
ASCII contains a number of control codes. One of these is XOFF (stop output or control-S) and another is XON (resume output or control Q). Basically the C function isprint(3) tests if a character is printable (in C). I'm sure there are similar functions available to Perl and other scripting languages. Or you can simply test the value of a character. If it is < 0x20 it is a control character.
Jerry Feldman wrote:
On 02/24/2009 07:53 PM, Konstantin Svist wrote:
I have a script which prints out some data to the terminal, which I keep in a screen session. Often times I see indecipherable characters printed out and the output freezes - I'm guessing some control code is being triggered from the printout. Is there a way to prevent this?
ASCII contains a number of control codes. One of these is XOFF (stop output or control-S) and another is XON (resume output or control Q). Basically the C function isprint(3) tests if a character is printable (in C). I'm sure there are similar functions available to Perl and other scripting languages. Or you can simply test the value of a character. If it is < 0x20 it is a control character.
You do not want to stop all control characters - you will need 0x0A and 0x0D. You also need to watch out for are characters above 0x7F as they will be special characters (font dependent).
Dependent on the terminal emulation, you may also have an alternate font command. (0x0B?) This can produce interesting results.
Mikkel
Konstantin Svist wrote:
I have a script which prints out some data to the terminal, which I keep in a screen session. Often times I see indecipherable characters printed out and the output freezes - I'm guessing some control code is being triggered from the printout. Is there a way to prevent this?
Pipe it through cat -vet?
(Strictly, only cat -v is needed. -e adds a $ at the end of each line and -t prints tabs as ^I. And if you have -e, you don’t need -v for Gnu cat. This isn’t true with other cats, and “cat -vet” is easy to remember!)
James