read(),write() 读/写文件
read
read()是一个系统调用函数。用来从一个文件中,读取指定长度的数据到 buf 中。
使用read()时需要包含的头文件: <unistd.h>
函数原型:
ssize_t read(int fd, void *buf, size_t count);
ssize_t是系统头文件中 typedef 定义的数据类型,相当于 signed int。
参数:
fd:要从中读取内容的文件的文件描述符。
count:期望读取的文件字节数。
返回值:
成功 返回读到的字节数; 已读到文件结尾返回 0; 出错返回 -1。
Write
write()是一个系统调用函数,作用是将buf 中的内容写入到文件中。
使用write()函数时要包含头文件 <unistd.h>。
函数原型:
ssize_t write(int fd, char *buf, size_t count)
参数:
fd:要从中读取内容的文件的文件描述符。
count:期望读取的文件字节数。
返回值:
写入成功返回实际写入的字节数,出错返回-1。
不得不提的是,返回-1的常见原因是:磁盘空间已满,超过了一个给定进程的文件长度。
使用read(),write()完成文件拷贝:
1 #include <unistd.h> 2 int main(int argc, char *argv[]) 3 { 4 int fs = open(argv[1], O_RDONLY); //打开要复制的源文件 5 if (fs == -1) 6 { 7 perror("open source file"); 8 return -1; 9 } 10 int fd = open(argv[1], O_RDONLY | O_CREAT | O_EXCL, 0666); //创建要复制的目标文件,若文件已存在退出 11 if (fd < 0) 12 { 13 perror("open dest file"); 14 return -1; 15 } 16 17 char buf[32] = {0}; 18 int count ; 19 while ((count = read(fs, buf, sizeof(buf))) > 0) //从源文件读取数据并写入目标文件 20 { 21 write (fd, buf, strlen(buf)); 22 } 23 close(fs); 24 close(fd); 25 return 0; 26 }
分类:
Linux文件I/O
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人