问题 - 当方框2请求时,动态地将大小为350 MB的文件从linux网络盒1传输到另一个Linux网络盒2。
系统内存有限,为1 GB,文件大小为350 MB,存储在磁盘上。系统实际上忙于做很多其他事情。
根据需要自动传输文件的最佳方法是什么?如果我从磁盘读取完整的文件并在传输之前将其存储在RAM中,那实际上会占用大量内存。如果我想避免这种情况,那么使用mmap传输文件会有帮助吗? mmap如何适应这种情况?
答案 0 :(得分:0)
在大多数情况下,您可以(并且应该)使用缓冲副本,如下所示:
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作为优化。