Hi all,

Why does  loop.connect_read_pipe not support the pipes that openpty() 
creates, but is does for os.pipe()

master, slave = os.openpty()
shell_out = io.open(master, 'rb', 0)
transport, protocol = yield from loop.connect_read_pipe(MyProtocol, 
shell_out)


In unix_events.py, there's the following check that fails.

if not (stat.S_ISFIFO(mode) or stat.S_ISSOCK(mode)):


I think it should be something like this:

if not (stat.S_ISFIFO(mode) or stat.S_ISSOCK(mode) or stat.S_ISCHR(mode)):


I tried this patch and it resolves the issue for me. Correct me if I'm 
wrong, but I don't think there is any reason to block character devices 
like this. Actually they're not that different from a unix pipe.


For those interested in my use case:
I'm building something like "tmux" or "gnu screen", but in Pure Python. I 
use the "pyte" library as output interpreter, but will write a custom 
renderer.
Calling the subprocess_exec wrapper does not work, because it uses normal 
pipes, while I want the programs that run to be aware that they are running 
in a real pseudo terminal.


Cheers,
Jonathan

Reply via email to