2011-04-18 43 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混合。