5

ここでの関連する質問と回答で、誰かがemacs(23.2)内のpython-shellがラインバッファではなくブロックバッファであると仮定しました。推奨される修正は、スクリプト内のstdioがその内容をpython-shellにフラッシュする場所にsys.stdout.flush()を追加することでした。

python-shell(LinuxではなくWindowsのemacs 23.2で実行)をa)TTYに接続されていると考えるか、b)ブロックバッファモードの代わりにラインバッファを使用するように仕向ける方法はありますか?IDLEではこれができるのにemacsではできない理由がわかりません。

スクリプト全体にsys.stdout.flush()を追加するよりも、emacsをカスタマイズしたいです。私を怠惰と呼んでください:-)。

ありがとう、

マイク

4

1 に答える 1

4

不思議に思う人のために、関連する動作はここで、emacs「7。サブプロセス\7.3シェルとサブプロセスでのバッファリング」で説明されていると思います。

「シェルバッファでは、stdoutはパイプハンドルであるため、ブロックでバッファリングされます。プログラムのバッファリング動作を異なるものにする場合は、プログラム自体を変更する必要があります。setbufとsetvbufを使用してバッファリングのセマンティクスを操作します。」

私のinit.elに以下を追加することで解決しました(詳細については、このSOリンクを参照してください

(setenv "PYTHONUNBUFFERED" "x")
于 2010-05-21T15:18:28.383 に答える