GNU/Linux >> Linux の 問題 >  >> Linux

stdbuf が Python に影響しないのはなぜですか?

デフォルトでは、Python の print() 関数はその出力を sys.stdout に送信します 、そのドキュメントはこれを指定します:

<ブロック引用>

インタラクティブな場合、stdoutstderr ストリームは行バッファリングされます。それ以外の場合は、通常のテキスト ファイルのようにブロック バッファリングされます。この値は -u でオーバーライドできます コマンドライン オプション

これらのドキュメントは、stdbuf のような一般的な環境の影響の余地を残していないことに注意してください。 コマンド、sys.stdout のバッファリング モードで :-u の場合はバッファリングされません オプションが使用されました (または、同等に、環境変数 PYTHONUNBUFFERED の場合) それ以外の場合は、インタラクティブな場合はライン バッファリングされ、非インタラクティブな場合はブロック バッファリングされます。

stdbuf のドキュメントのように、プログラムは独自のバッファリングを制御できます。 承認:

<ブロック引用>

注:COMMAND が標準ストリームのバッファリングを調整する場合 (たとえば、「tee」は調整します)、「stdbuf」によって変更された対応する設定を上書きします。また、一部のフィルター (「dd」や「cat」など) は I/O にストリームを使用しないため、「stdbuf」設定の影響を受けません。

Python はバッファリングの詳細を明示的に指定しているため、実際には積極的にそのバッファリングを管理していると期待するのが合理的であり、したがって stdbuf の影響は疑わしいものです。 .


Linux
  1. Apt-keyのマニュアルページがAddコマンドの使用に反対するようにアドバイスするのはなぜですか?

  2. Linux – SuidはLinuxのディレクトリに影響を与えませんか?

  3. `while Ifs =Read ..`で、なぜIfsは効果がないのですか?

  1. UbuntuがCdsの送料無料を停止したのはなぜですか?

  2. PythonエラーAttributeError:「モジュール」オブジェクトには属性「sha1」がありません

  3. Linux Hyper-V ゲストの IP アドレスが Hyper-V マネージャーに表示されないのはなぜですか

  1. mysqlユーザーが/etc/ passwdにbashシェルを持っているのはなぜですか?

  2. Lsからの出力には改行がありますが、1行で表示されます。なんで?

  3. 所有権を剥奪されてターミナルを失ったプロセスの出力はどうなりますか?