我基本上试图通过在读取器进程中使用内存映射文件来“尾随”文件,而编写器进程在某个时间间隔将数据附加到它(使用stdio)。
我的问题是内存映射文件和编写器之间的同步如何在幕后工作?我还需要其他同步机制吗?
我可以使用inotify来找出修改文件的时间,但我不确定内存映射文件是否也能保证更新。
我正在使用Linux ubuntu和gcc 4.8.2。
答案 0 :(得分:1)
如果要写入内存映射文件,则在以下情况下将文件备份到磁盘(我假设您使用MAP_SHARED
映射了文件):
msync
(请参阅http://man7.org/linux/man-pages/man2/msync.2.html)munmap
时(请参阅http://man7.org/linux/man-pages/man2/munmap.2.html 在任何一种情况下,您都应该使用msync
将数据刷新到磁盘并通知在文件上观看的任何程序。