Flush stdin

Nobody nobody at nowhere.invalid
Sat Oct 18 18:55:19 CEST 2014


On Fri, 17 Oct 2014 12:38:54 +0100, Empty Account 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,

You can't "flush" an input stream.

> so I am using the termios module.

> I am receiving this exception
> termios.error: (25, 'Inappropriate ioctl for device')

termios only works on terminals, not pipes.

It's a safe bet that your problem is that "nc" isn't flushing its stdout
after each line (this is the default behaviour for stdio streams which
don't correspond to a terminal).

Check whether "nc" has a flag to line-buffer its output. If it doesn't,
the simplest solution is probably to write a Python script which creates a
pseudo-tty (using the "pty" module) and executes "nc" with its stdout
associated with the pty.




More information about the Python-list mailing list