在Go中读取不断增长的mmap文件

时间:2018-07-25 20:09:28

标签: go system-calls mmap

我想在golang中读取mmap文件。

另一个过程是将内容写入其中,因此读取时其大小会不断增加。

我正在使用

syscall.Mmap(fd int, offset int64, length int, prot int, flags int)

这将返回一个字节数组。

我需要继续做syscall.Mmap来阅读更新的mmap吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

syscall.Mmap()只是C mmap(2)的薄包装,因此其行为相同。如果您使用了syscall.MAP_SHARED标志(其他进程也使用过),则可以通过其他进程来更新返回的内存区域。除了记住要在完成后致电syscall.Munmap()之外,您无需执行其他任何操作。根据您的工作,它可能是defer的不错选择。

但是,如果有人正在写共享空间并将其扩展到您映射的区域之外,那么您将不得不再次映射它。它不会自动调整自身大小。