问题 - 当盒子 2 请求时,将大小为 350 MB 的文件从 Linux 网络盒子 1 动态传输到另一个 Linux 网络盒子 2。
系统内存有限为 1 GB,磁盘上存储的文件大小为 350 MB。系统实际上正忙着做很多其他事情。
自动按需动态传输文件的最佳方法是什么?如果我在传输之前从磁盘读取完整的文件并将其存储在 RAM 上,这实际上会占用大量内存。如果我想避免这种情况,那么使用 mmap 传输文件是否会有帮助? mmap 如何适应这种情况?
最佳答案
在大多数情况下,您可以(并且应该)使用缓冲副本,如下所示:
while (read some data from the input into a buffer) {
write data from the buffer to the output
}
and you're done
缓冲区不需要很大。对于大多数情况来说,64 KB 左右的大小就足够了。
仅适用于发送端,您可以使用 the sendfile()
system call作为一种优化。
关于linux - 使用 mmap 复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033412/