1

を使用して子プロセスを制御していますpexpect( subprocess pty をサポートしておらず、2 つのパイプでデッドロックが発生したため)。このプロセスは に多くの出力を作成しますが、stderrこれには興味がありませんpexpectstdin

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

どうすればこれをオフにできますか?

4

1 に答える 1

3

pty の使用は、パイプとまったく同じではありません。raw モードにしない場合、tty ドライバーは文字をエコー バックし、その他の行編集を実行します。そのため、クリーンなデータ パスを取得するには、pty/tty も raw モードにする必要があります。

疑似デバイスを扱っているため、I/O ストリームは 1 つしかありません。stdout と stderr の間に区別はありません (これはユーザー空間の規則です)。そのため、pty/tty を使用すると、常に stdout と stderr が混在して表示されます。

于 2011-04-18T10:48:22.470 に答える