当前位置: 首页 > news >正文

Go zero copy,复制文件

这里使用零拷贝技术复制文件,从内核态操作源文件和目标文件。避免了在用户态开辟缓冲区,然后从内核态复制文件到用户态的问题。
由内核态完成文件复制操作。
调用的是syscall.Sendfile系统调用函数。

//go:build linuxpackage zero_copyimport ("fmt""os""syscall""testing"
)func TestZeroCopy(t *testing.T) {// 打开源文件和目标文件srcFile, err := os.Open("./source.txt")if err != nil {fmt.Println("无法打开源文件:", err)return}defer srcFile.Close()dstFile, err := os.Create("./destination.txt")if err != nil {fmt.Println("无法创建目标文件:", err)return}defer dstFile.Close()srcFileInfo, _ := srcFile.Stat()fileSize := int(srcFileInfo.Size())offset := int64(0)n, err := syscall.Sendfile(int(dstFile.Fd()), int(srcFile.Fd()), &offset, fileSize)if err != nil {fmt.Println("文件拷贝失败:", err)return}fmt.Printf("成功拷贝 %d 字节\n", n)
}
http://www.lryc.cn/news/276916.html

相关文章:

  • http协议九种请求方法介绍及常见状态码
  • 详解flink exactly-once和两阶段提交
  • Qt/QML编程学习之心得:QDbus实现service接口调用(28)
  • 前端nginx配置指南
  • 接口测试到底怎么做,5分钟时间看完这篇文章彻底搞清楚
  • 显示管理磁盘分区 fdisk
  • Hyperledger Fabric 管理链码 peer lifecycle chaincode 指令使用
  • L1-011 A-B(Java)
  • 系列七、Ribbon
  • 山东名岳轩印刷包装携专业包装袋盛装亮相2024济南生物发酵展
  • BGP公认必遵属性——Next-hop(一)
  • 增强Wi-Fi信号的10种方法,值得去尝试
  • 第十五章 ECMAScript6新增的常用语法
  • vulhub中的Apache SSI 远程命令执行漏洞
  • MSB20M-ASEMI迷你贴片整流桥MSB20M
  • 工程管理系统功能设计与实践:实现高效、透明的工程管理
  • 【C#】网址不进行UrlEncode编码会存在一些问题
  • 深入Pandas(二):高级数据处理技巧
  • 实验8 分析HTTP协议和DNS
  • Talk | EMNLP 2023 最佳长论文:以标签为锚-从信息流动的视角分析上下文学习
  • 2024年中国电子学会青少年编程等级考试安排的通知
  • [足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-2(2) 质量刚体的在坐标系下运动
  • 【亚马逊云科技】自家的AI助手 - Amazon Q
  • 网络安全—SSL安全访问应用
  • Qt5.14.2实现将html文件转换为pdf文件
  • Minecraft教程:使用MCSM面板搭建我的世界私服并实现远程联机
  • springboot学生成绩管理系统源码和论文
  • w20webshell之文件上传
  • 【Redis】非关系型数据库之Redis的主从复制、哨兵和集群高可用
  • 从私有Git仓库的搭建到命令的使用及部署再到分支管理