编辑:这似乎只适用于 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。