2016-08-08 7 views
2

誰かがappendto関数を使う適切な方法を説明できますか?ルア4.0.1 appendto

デバッグテキストをファイルに書き込もうとしています。関数を呼び出すと即座に書かれていますが、何らかの理由でプログラムが終了するまで待ってから、すべてを一度に書き出します。

私は正しい機能を使用していますか?代わりにファイルを書き込むたびに、ファイルを開いてから書き込んだ後に閉じる必要がありますか?

ありがとうございました。

+2

appendto、write、flush、write、flush、... –

答えて

2

バッファリングに問題があるようです(これは他の言語でもよくある質問ですが、btw)。ファイルに書き込むデータはメモリバッファに保持され、後でディスクに書き込まれるだけです(これは、パフォーマンスを向上させるためにディスクにまとめて書き込むために行われます)。

1つの可能性は、すでに提案したようにファイルを開いたり閉じたりすることです。ファイルハンドルを閉じると、バッファの内容がディスクにフラッシュされます。

第2の可能性は、flush関数を使用して、データがディスクに書き込まれることを明示的に要求することです。 Luaの4.0.1では、フラッシュファイルを渡すことが

-- If you have opened your file with open: 
local myfile = open("myfile.txt", "a") 
flush(myfile) 

-- If you used appendto the output file handle is in the _OUTPUT global variable 
appendto("myfile.txt") 
flush(_OUTPUT) 

扱う呼び出すことができますいずれか、またはあなたはそれはあなたが現在開いているすべてのファイルをフラッシュします。その場合には引数なし、と面一に呼び出すことができます。

flush() 

詳細は、リファレンスマニュアルhttp://www.lua.org/manual/4.0/manual.html#6を参照してください。