我想在golang中读取mmap文件。
另一个过程是将内容写入其中,因此读取时其大小会不断增加。
我正在使用
syscall.Mmap(fd int, offset int64, length int, prot int, flags int)
这将返回一个字节数组。
我需要继续做syscall.Mmap
来阅读更新的mmap吗?还有更好的方法吗?
答案 0 :(得分:2)
syscall.Mmap()
只是C mmap(2)
的薄包装,因此其行为相同。如果您使用了syscall.MAP_SHARED
标志(其他进程也使用过),则可以通过其他进程来更新返回的内存区域。除了记住要在完成后致电syscall.Munmap()
之外,您无需执行其他任何操作。根据您的工作,它可能是defer
的不错选择。
但是,如果有人正在写共享空间并将其扩展到您映射的区域之外,那么您将不得不再次映射它。它不会自动调整自身大小。