2013-08-30 2 views
7

私は実際にそこに多くの情報を見つけることができませんこれを言及。これらの標準的なio記述子は、Luaでデフォルトでバッファリングまたはバッファリングされないように設定されていますか?必要に応じて、あるモードから別のモードに切り替えることはできますか?例えばLuaではstdin、stdout、stderrがバッファリングされているかバッファされていませんか?

は、Pythonでそれがバッファなし作るためsys.stdin.detachのようなものを提供します。

答えて

5

setvbufを参照してください。それは基礎となるC setvbuf機能へのインタフェースです。

たとえば、あなたはこのようにそれを使用することができます:

io.stdout:setvbuf 'no' -- switch off buffering for stdout 

私の知る限りLuaは標準ストリームにフックする基礎となるCランタイムに依存しているので、私はC標準ストリームのための通常の保証が適用さだと思います。この質問として

4

も標準ストリームのためのデフォルトバッファネスを要求します。 Luaは内部的にCの標準ストリームを使用しているので、同じルールが適用されます。

標準Cは必要です:

  1. 標準入力と標準出力が完全にバッファリングされている、彼らは対話型のデバイスを参照しない場合場合にのみ 。
  2. 標準エラーは決して完全にバッファされません。

POSIXは意味(ただし、必要ではない):

  1. 標準誤差は常にバッファリングされていません。彼らは、端末 デバイスを参照する場合
  2. 他のすべてのストリームは、ラインバッファリングされています。そうでない場合、彼らは完全にバッファリングされています。

Cと同じように、setvbufを使用してバッファステータスを変更できます。

関連する問題