当另一个进程写入新行时,从文件中读取

时间:2011-06-21 10:05:03

标签: c++

C ++中最快的方法是从另一个进程写入的文件中读取新行。或者如何通知我的程序文件中有新行如此阅读? (在linux中)

4 个答案:

答案 0 :(得分:1)

假设操作系统支持并发文件访问,您需要做的就是寻找EOF,等待stat更改然后尝试从文件中读取。您可能希望在睡眠中添加以减慢循环。

POISX上的'tail'命令(带-f选项)实现了这个 - source code is available

答案 1 :(得分:1)

最快的方法是使用管道或事件(对于Windows应用程序)。

如果你仍然想要使用文件,首先你确实需要确保文件已被真正修改过(使用搜索并将其与prew值进行比较)。然后去“寻找的最后一个val”并阅读它。

最好使用互斥锁(如果你从文件中读取数据)。

答案 2 :(得分:0)

从我的头脑中,你是否尝试过这样的事情:

计算文件中的行数,然后存储它。 获取文件的大小(谷歌它,我不想破坏乐趣:D)。 然后尝试从文件大小改变时存储的最后一行读取......并一次又一次。

玩得开心:)

答案 3 :(得分:0)

使用inotify获取有关文件更改的通知,然后重新读取上一个pos,如果该文件现在比以前更大。