編集: これは Mac OS にのみ適用されるようです。Ubuntuは問題なく動作します。
ファイルを開いてそこからデータを読みたいという単純な問題があります。ファイルが変更されると、より多くのデータを読み取ります。問題は、ファイルを一度だけ開きたいことです。
import std.c.stdio;
import core.thread;
void main(string[] args)
{
char[1024] buffer;
FILE* file = fopen("text.txt", "r");
printf("First Read:\n");
while(fgets(buffer.ptr, buffer.length, file) !is null)
{
printf("%s", buffer.ptr);
}
clearerr(file);
Thread.sleep(dur!("seconds")(5));
printf("Second Read:\n");
while(fgets(buffer.ptr, buffer.length, file) !is null)
{
printf("%s", buffer.ptr);
}
fclose(file);
}
ファイルを読み取り、一時停止すると、開いているファイルに新しい行を追加します。プログラムが再開すると、新しい行は完全に無視されます。ああ!
これはどこかでバッファリングした結果だと思うので、次のように、この動作を回避するためにあらゆる種類のことを試しました。
clearerr()
fseek()
fflush()
何も機能していないようです。私は何が欠けていますか?それは単純なものでなければなりません。何か案は?
私は主に Linux/Mac OS を使用しています。