Flush stdin
Nobody
nobody at nowhere.invalid
Sat Oct 18 12:55:19 EDT 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