Flush stdin

Cameron Simpson cs at zip.com.au
Sat Oct 18 09:11:45 CEST 2014


On 17Oct2014 12:38, Empty Account <emptya45 at gmail.com> wrote:
>I am using netcat to listen to a port and python to read stdin and print to
>the console.
>
>nc -l 2003 | python print_metrics.py
>
>sys.stdin.flush() doesn’t seem to flush stdin, so I am using the termios
>module. 

You're aware that a stdio flush and a termios flush operate on two totally 
unrelated buffers?

>while True: 
>   input = sys.stdin.readline()
>   # do some parsing 
>   …  
>   sys.stdout.write(parsed_data)
>   time.sleep(3)
>   termios.tcflush(sys.stdin, termios.TCIOFLUSH)
>
>I am receiving this exception
>termios.error: (25, 'Inappropriate ioctl for device')

That is because stdin is attached to the pipe from netcat. A pipe is not a 
terminal.

>I will be using this script on Unix based systems and I wondered what
>approach I could use 
>to flush stdin?

Like Chris, I think you need to explain why you even want to flush stdin.  
There's probably something better you can do.

Cheers,
Cameron Simpson <cs at zip.com.au>

I strongly suspect so.  Practically everyone on sci.physics has a theory that
is far superior to special relativity, general relativity, quantum mechanics
*and* the standard model.  Around here, it's only a small clique of arrogant
young members of the physics establishment who fail to recognize these
revolutionary theories.  I'd explain why, but I have to go finish designing
my faster-than-light vacuum energy perpetual motion telekinetic
aether-powered time machine.    - John Baez



More information about the Python-list mailing list