在外部写入时从C中的文件读取

时间:2011-11-07 12:24:54

标签: c linux io

我想写一个小C程序,它在文件被主动写入时从文件中读取。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

如果您可以控制编写过程,则应在阅读器和编写器中使用mmap()MAP_SHARED。通过这种方式,读者可以立即看到作者所做的更改。

另外,请注意,当您打开文件时,Linux不会对文件中的数据进行任何快照,因此即使您只使用read()和{{}},您也应该看到文件中正在进行的更改。 {1}}。

为了确定Linux中是否修改/打开/访问/等文件,您可以使用lseek() API(请参阅inotify manpage)。这允许您使您的进程等待您感兴趣的事件直到它发生(而不是定期轮询)。您还可以使用inotify或更传统的epoll()来完成类似的结果。

答案 1 :(得分:2)

我认为tail -f正是你想要的,不是吗?看一下源代码: http://www.gnu.org/s/coreutils/

或者这个(不确定是否更新):http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/tail.c