2011-04-18 45 views
1

我用pexpect来控制孩子进程(因为subprocessdoesn't support pty's和我遇到了两个管道的死锁)。该过程产生的stderr大量的输出,在我不感兴趣,并apparantly pexpect也回送什么我写它的stdin用pexpect跳过stdin和stderr的孩子

>>> import pexpect 
>>> p = pexpect.spawn('rev') 
>>> p.sendline('Hello!') 
7 
>>> p.readline() 
'Hello!\r\n' 
>>> p.readline() 
'!olleH\r\n' 

我如何关闭这个功能?

回答

3

使用pty与管道不完全相同。如果你不进入原始模式,tty驱动程序会回显字符并执行其他行编辑。因此,为了获得干净的数据路径,您还需要将pty/tty设置为原始模式。

由于您现在正在处理伪设备,因此您只有一个I/O流。 stdout和stderr之间没有区别(这是一个用户空间约定)。所以当你使用pty/tty时你总会看到stdout和stderr混合。