0

次の呼び出しを使用して、プロセスを生成し、標準入力、標準出力、および標準エラー出力のファイル記述子を取得し、標準出力の出力を監視します。

[widget.pid,widget.stdin,widget.stdout,widget.stderr] = \
            gobject.spawn_async(['/bin/sed','s/hi/by/g'], 
                                standard_input=True,
                                standard_output=True,
                                standard_error=True
                                )
 gobject.io_add_watch(widget.stdout,
                      gobject.IO_IN,
                      getdata)

次に、コールバック関数 getdata をトリガーすることを期待して、widget.stdin に行を書き込みます。

私が見つけたのは、widget.stdin を閉じたときにのみコールバック getdata が呼び出されることです。

一方、端末からは、sedは標準入力に送信された完成した各行をエコーするため、標準入力で完成した行が表示されるたびにsedが出力を生成し、一度に1行ずつ取得していないことが期待されます.

より多くの行を送信するために接続を開いたままにして、widget.stdin に書き込まれた行を /bin/sed に強制的に表示する方法については明確ではありません。python -u フラグは何の違いもないようです。何か案は?ありがとう。

4

1 に答える 1